## 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


### Tabla de Contenido

1. [Obtener configuración de ogboot](#obtener-configuración-de-ogboot) - `GET /ogboot/v1/config`
2. [Obtener datos de rendimiento](#obtener-datos-de-rendimiento) - `GET /ogboot/v1/status`
3. [Mostrar información de todos los clientes ogLive instalados](#mostrar-información-de-todos-los-clientes-oglive-instalados) - `GET /ogboot/v1/oglives`
4. [Mostrar información de un cliente ogLive instalado](#mostrar-información-de-todos-los-clientes-oglive-instalados) - `GET /ogboot/v1/oglives/{Index|Dir}`
5. [Mostrar información del cliente ogLive predeterminado](#mostrar-información-del-cliente-oglive-predeterminado) - `GET /ogboot/v1/oglives/default`
6. [Cambiar ogLive predeterminado](#cambiar-oglive-predeterminado) - `POST /ogboot/v1/oglives/default/{Index}`
7. [Instalar nuevo cliente ogLive desde imagen descargada](#instalar-nuevo-cliente-oglive-desde-imagen-descargada) - `POST /ogboot/v1/oglive/{iso}`
8. [Desinstalar cliente ogLive y eliminar imagen](#desinstalar-cliente-oglive-y-eliminar-imagen) - `DELETE /ogboot/v1/oglives/{iso}`
9. [Regenerar archivo de información de los ogLive](#regenerar-archivo-de-información-de-los-oglive) - `PUT /ogboot/v1/oglives`
10. [Mostrar menú de descarga de imagen de ogLive](#mostrar-menú-de-descarga-de-imagen-de-oglive) - `GET /ogboot/v1/images/download`
11. [Obtener todos los archivos de arranque](#obtener-todos-los-archivos-de-arranque) - `GET /ogboot/v1/pxes`
12. [Obtener archivo de arranque](#obtener-archivo-de-arranque) - `GET /ogboot/v1/pxes/{mac}`
13. [Crear archivo de arranque](#crear-archivo-de-arranque) - `POST /ogboot/v1/pxes` 
14. [Eliminar archivo de arranque](#eliminar-archivo-de-arranque) - `DELETE /ogboot/v1/pxes`
15. [Obtener todas las plantillas](#obtener-todas-las-plantillas) - `GET /ogboot/v1/pxe-templates`
16. [Obtener contenido de la plantilla](#obtener-contenido-de-la-plantilla) - `GET /ogboot/v1/pxe-templates/{nombre}`
17. [Crear plantilla](#crear-plantilla) - `POST /ogboot/v1/pxe-templates`
18. [Regenerar plantilla](#regenerar-plantilla) - `PUT /ogboot/v1/pxe-templates` 


### Obtener Configuración de ogboot

Devuelve la configuración actual del ogboot.

**URL:** `/ogboot/v1/config`
**Método HTTP:** GET

**Ejemplo de Solicitud:**

```bash
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/config
```

**Respuestas:**
- **Código 200 OK:** La configuración del ogboot se obtuvo exitosamente.
  - **Contenido:** Configuración del ogboot en formato JSON.
    ```json
    {
      "config-file": "/opt/opengnsys/etc/ogliveinfo.json",
      "download-url": "https://opengnsys.es/trac/downloads",
      "download-dir": "/opt/opengnsys/lib",
      "install-dir": "/opt/opengnsys/tftpboot",
      "default-name": "ogLive",
      "min-release": "r20190601"
    }
    ```

- **config-file**: Ruta del archivo de configuración que usa oglivecli para guardar los oglives instalados.

- **download-url**: URL base desde la cual se descargan las imágenes de oglive.

- **download-dir**: Ruta del directorio en el cual se almacenan las imágenes de oglive descargadas

- **install-dir**: La ruta del directorio donde se instalan las imágenes de oglive

- **default-name**: Nombre predeterminado utilizado para los clientes ogLive.

- **min-release**: La versión mínima recomendada para la instalación de imágenes oglives.

- **Código 400 Bad Request:** La solicitud es incorrecta. La configuración del ogboot no se ha obtenido correctamente.



### Obtener estado de ogboot

Devuelve la consistencia, errores de incompatibilidad y de configuración

**URL:** `/ogboot/v1/status`
**Método HTTP:** GET

**Ejemplo de Solicitud:**

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

**Respuestas:**
- **Código 200 OK:** El status de ogboot se obtuvo exitosamente.
  - **Contenido:**
      ```
        Some installed ogLive aren't fully compatible: , , ogLive-3.19.0-i386-r4795
        Problems detected: 
    ```
- **Código 400 Bad Request:** La solicitud es incorrecta. La status de ogboot no se ha obtenido correctamente.




### Mostrar Información de Todos los Clientes ogLive Instalados

Muestra información en formato JSON sobre todos los clientes ogLive instalados.

**URL:** `/ogboot/v1/oglives`
**Método HTTP:** GET

**Ejemplo de Solicitud:**

```bash
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/oglives/

[
  {
    "distribution": "focal",
    "kernel": "5.11.0-22-generic",
    "architecture": "amd64",
    "revision": "r20210413",
    "directory": "ogLive-5.11.0-r20210413",
    "iso": "ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso"
  },
  {
    "distribution": "focal",
    "kernel": "5.13.0-27-beta",
    "architecture": "amd64",
    "revision": "r20210706",
    "directory": "ogLive-5.13.0-r20210706",
    "iso": "ogLive-focal-5.13.0-27-beta-amd64-r20210706.5b4bf5f.iso"
  }
]

```
- **distribution**: Distribución del sistema operativo de la imagen ogLive

- **kernel**: Versión del kernel del sistema operativo utilizado por la imagen ogLive

- **architecture**: Arquitectura del hardware de la imagen ogLive

- **revision**: Versión de la imagen ogLive

- **directory**: Directorio donde se encuentra instalado el cliente ogLive en el sistema.

- **iso**: Nombre del archivo ISO utilizado para instalar el cliente ogLive. 

**Respuestas:**
- **Código 200 OK:** La información sobre todos los clientes ogLive instalados se obtuvo exitosamente.
  - **Contenido:** Información sobre todos los clientes ogLive instalados en formato JSON.
  

### Mostrar Información de un Cliente ogLive Instalado

Muestra información en formato JSON sobre un cliente ogLive instalado específico.

**URL:** `/ogboot/v1/oglives/{Index}`
**Método HTTP:** GET

**Parámetros de la URL:**
- `{Index}`: El índice o directorio del cliente ogLive instalado.

**Ejemplo de Solicitud:**

```bash
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/oglives/1

{
  "distribution": "focal",
  "kernel": "5.11.0-22-generic",
  "architecture": "amd64",
  "revision": "r20210413",
  "directory": "ogLive-5.11.0-r20210413",
  "iso": "ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso"
}
```

**Respuestas:**
- **Código 200 OK:** La información sobre el cliente ogLive instalado se obtuvo exitosamente.
  - **Contenido:** Información sobre el cliente ogLive instalado en formato JSON.
- **Código 404 Not Found:** No se encontró ningún cliente ogLive instalado con el índice o directorio proporcionado.

### Mostrar Información del Cliente ogLive Predeterminado

Muestra información en formato JSON sobre el cliente ogLive predeterminado.

**URL:** `/ogboot/v1/oglives/default`
**Método HTTP:** GET

**Ejemplo de Solicitud:**

```bash
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/oglives/default

{
  "distribution": "focal",
  "kernel": "5.11.0-22-generic",
  "architecture": "amd64",
  "revision": "r20210413",
  "directory": "ogLive-5.11.0-r20210413",
  "iso": "ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso"
}
```

**Respuestas:**
- **Código 200 OK:** La información sobre el cliente ogLive predeterminado se obtuvo exitosamente.
  - **Contenido:** Información sobre el cliente ogLive predeterminado en formato JSON.





### Cambiar ogLive Predeterminado

Establece un nuevo cliente ogLive como predeterminado utilizando su índice.

**URL:**  `/ogboot/v1/oglives/default`
**Método HTTP:** POST

**Parámetros de la URL:**
- `{Index}`: El índice del cliente ogLive que se establecerá como predeterminado.

**Ejemplo de Solicitud:**

```bash
curl -X POST -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/oglives/default/1
```

**Respuestas:**
- **Código 200 OK:** El cliente ogLive se estableció como predeterminado exitosamente.
- **Código 404 Not Found:** No se encontró ningún cliente ogLive con el índice proporcionado.



### Descargar e Instalar Nuevo Cliente ogLive desde Imagen Descargada

Descarga y luego instala un nuevo cliente ogLive utilizando la imagen descargada, especificada por su nombre de archivo ISO en el parámetro de entrada.

**URL:** `/ogboot/v1/oglive`
**Método HTTP:** POST

**Parámetros de Entrada:**
- `ISO: Nombre de la ISO que se desea descargar e instalar

**Ejemplo de Solicitud:**

```bash
curl -X POST -H "Authorization: $API_KEY" -d "ISO=ogLive-focal-5.13.0-27-beta-amd64-r20210706.5b4bf5f.iso" http://example.com/ogboot/v1/oglive
```

**Respuestas:**
- **Código 200 OK:** La descarga e instalación del nuevo cliente ogLive desde la imagen descargada fue exitosa.
- **Código 404 Not Found:** No se encontró ninguna imagen ogLive con el índice o nombre de archivo ISO proporcionado.



### Desinstalar Cliente ogLive

Desinstala un cliente ogLive específico y elimina su imagen asociada.

**URL:** `/ogboot/v1/oglives/{Index}`
**Método HTTP:** DELETE

**Parámetros de la URL:**
- `{Index}`: El índice deL archivo ISO del cliente ogLive que se desinstalará y eliminará.

**Ejemplo de Solicitud:**

```bash
curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogboot/v1/oglives/1
```

**Respuestas:**
- **Código 200 OK:** El cliente ogLive se desinstaló y su imagen asociada se eliminó correctamente.
- **Código 404 Not Found:** No se encontró ningún cliente ogLive con el índice o nombre de archivo ISO proporcionado.


### Regenerar Archivo de Información de los ogLive

Regenera el archivo de información de los clientes ogLive instalados.

**URL:** `/ogboot/v1/oglives`
**Método HTTP:** PUT

**Ejemplo de Solicitud:**

```bash
curl -X PUT -H "Authorization: $API_KEY" http://example.com/ogboot/v1/oglives
```

**Respuestas:**
- **Código 200 OK:** El archivo de información de los clientes ogLive se regeneró correctamente.
- **Código 500 Internal Server Error:** Ocurrió un error al intentar regenerar el archivo de información de los clientes ogLive.



### Mostrar Menú de Descarga de Imagen de ogLive

Muestra un menú con opciones para descargar imágenes de ogLive disponibles.

**URL:** `/ogboot/v1/images/download`
**Método HTTP:** GET

**Ejemplo de Solicitud:**

```bash
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/images/download
```

**Respuestas:**
- **Código 200 OK:** El menú de descarga de imágenes de ogLive se obtuvo exitosamente.
  - **Contenido:** Menú de descarga de imágenes de ogLive en formato JSON.



### Obtener Todos los Archivos de Arranque

Obtiene una lista de todos los archivos de arranque disponibles.

**URL:** `/ogboot/v1/pxes`
**Método HTTP:** GET

**Ejemplo de Solicitud:**

```bash
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxes

{
  "boot_files": [
    "01-00:50:56:22:11:11",
    "01-00:50:56:22:11:12"
  ]
}

```

**Respuestas:**
- **Código 200 OK:** La lista de todos los archivos de arranque se obtuvo exitosamente.
  - **Contenido:** Lista de archivos de arranque en formato JSON.
- **Código 500 Internal Server Error:** Ocurrió un error al intentar obtener la lista de todos los archivos de arranque disponibles.


### Obtener Configuración de Arranque

Obtiene el contenido del archivo de configuración de arranque específico para un cliente utilizando su dirección MAC.

**URL:** `/ogboot/v1/pxes/{mac}`
**Método HTTP:** GET

**Parámetros de la URL:**
- `{mac}`: La dirección MAC del cliente cuyo archivo de configuración de arranque se desea obtener.

**Ejemplo de Solicitud:**

```bash
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/pxes/00:11:22:33:44:55

#!ipxe
set timeout 0
set timeout-style hidden

set ISODIR ogLive
set default 0
set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788

set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=$ISODIR LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1  ogprof=false vga=788
kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}
initrd tftp://172.17.8.71/ogLive/oginitrd.img
boot

```

**Respuestas:**
- **Código 200 OK:** El archivo de arranque para la dirección MAC especificada se encontró y se devuelve correctamente.
  - **Contenido:** El archivo de arranque en formato adecuado para su uso en el cliente correspondiente.
- **Código 404 Not Found:** No se encontró ningún archivo de arranque para la dirección MAC especificada.



### Crear Archivo de Arranque

Crea un nuevo archivo de arranque utilizando los parámetros proporcionados.

**URL:** `/ogboot/v1/pxes`
**Método HTTP:** POST

**Cuerpo de la Solicitud:**
- Datos necesarios para la creación del archivo de arranque, como el nombre, la configuración, etc.

**Ejemplo de Solicitud:**

```bash
curl -X POST -H "Authorization: $API_KEY" -d '{"mac": "00:50:56:22:11:12", "config": "#!ipxe\nset timeout 0\nset timeout-style hidden\n\nset ISODIR ogLive\nset default 0\nset kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788\n\nset kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=$ISODIR LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1  ogprof=false vga=788\nkernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}\ninitrd tftp://172.17.8.71/ogLive/oginitrd.img\nboot"}' http://example.com/ogboot/v1/pxes
```

**Respuestas:**
- **Código 200 OK:** El archivo de arranque se creó exitosamente.
- **Código 400 Bad Request:** La solicitud no pudo ser procesada debido a un error en los datos proporcionados en el cuerpo de la solicitud.
- **Código 500 Internal Server Error:** Ocurrió un error al subir el archivo de arranque.

### Eliminar Archivo de Arranque

Elimina un archivo de arranque específico utilizando su identificador único.

**URL:** `/ogboot/v1/pxes/{MAC}`
**Método HTTP:** DELETE

**Parámetros de la URL:**
- `{mac}`: La dirección MAC del cliente cuyo archivo de arranque se desea obtener.

**Ejemplo de Solicitud:**

```bash
curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/pxes/00:11:22:33:44:55
```

**Respuestas:**
- **Código 200 OK:** El archivo de arranque se eliminó correctamente.
- **Código 404 Not Found:** No se encontró ningún archivo de arranque con el identificador único especificado.
- **Código 500 Internal Server Error:** Ocurrió un error al eliminar el archivo de arranque.



### Actualizar Repositorio de Arranque

Actualiza el repositorio de archivos de arranque con los archivos modificados.

**URL:** `/ogboot/v1/pxes`
**Método HTTP:** PUT

**Cuerpo de la Solicitud:**
- Fichero en json con la configuración de arranque de la máquina

**Ejemplo de Solicitud:**

```bash
curl -X PUT -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"mac": "00:50:56:22:11:12", "config": "#!ipxe\nset timeout 0\nset timeout-style hidden\n\nset ISODIR ogLive\nset default 0\nset kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788\n\nset kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=$ISODIR LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1  ogprof=false vga=788\nkernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}\ninitrd tftp://172.17.8.71/ogLive/oginitrd.img\nboot"}' http://example.com/ogboot/v1/pxes
```

**Respuestas:**
- **Código 200 OK:** El repositorio de arranque se actualizó exitosamente con los archivos modificados.
- **Código 400 Bad Request:** La solicitud no pudo ser procesada debido a un error en los datos proporcionados en el cuerpo de la solicitud.
- **Código 500 Internal Server Error:** Ocurrió un error al actualizar el archivo de arranque.


### Obtener Todas las Plantillas

Obtiene una lista de todas las plantillas de arranque disponibles.

**URL:** `/ogboot/v1/pxe-templates`
**Método HTTP:** GET

**Ejemplo de Solicitud:**

```bash
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxe-templates
```

**Respuestas:**
- **Código 200 OK:** La lista de todas las plantillas de arranque se obtuvo exitosamente.
  - **Contenido:** Lista de plantillas de arranque en formato JSON.
- **Código 500 Internal Server Error:** Ocurrió un error al obtener las plantillas de arranque.


### Obtener Contenido de la Plantilla

Obtiene el contenido de una plantilla de arranque específica utilizando su nombre.

**URL:** `/ogboot/v1/pxe-templates/{nombre}`
**Método HTTP:** GET

**Parámetros de la URL:**
- `{nombre}`: El nombre de la plantilla de arranque cuyo contenido se desea obtener.

**Ejemplo de Solicitud:**

```bash
curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxe-templates/template1

#!ipxe
set timeout 0
set timeout-style hidden

set ISODIR ogLive
set default 0
set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.1.100:192.168.1.1:192.168.1.1:255.255.255.0:pc01:eth0:none group=Aula_virtual ogrepo=192.168.1.10 oglive=192.168.1.10 oglog=192.168.1.10 ogshare=192.168.1.10 ogprof=false vga=788
time kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}
time initrd tftp://172.17.8.71/ogLive/oginitrd.img
boot
```

**Respuestas:**
- **Código 200 OK:** El contenido de la plantilla de arranque se obtuvo exitosamente.
  - **Contenido:** Contenido de la plantilla de arranque en formato adecuado para su uso.
- **Código 400 Bad Request:** La solicitud no pudo ser procesada debido a un error en los datos proporcionados en el cuerpo de la solicitud.
- **Código 500 Internal Server Error:** Ocurrió un error al obtener la plantilla de arranque.

---

### Crear Plantilla

Crea una nueva plantilla de arranque utilizando los datos proporcionados.

**URL:** `/ogboot/v1/pxe-templates`
**Método HTTP:** POST

**Cuerpo de la Solicitud:**
- {name_template}: Nombre de la plantilla
- {ip}: Dirección IP del cliente.
- {gateway}: Puerta de enlace predeterminada.
- {netmask}: Máscara de red.
- {hostname}: Nombre del host del cliente.
- {interface}: Interfaz de red utilizada por el cliente.
- {group}: Grupo al que pertenece el cliente.
- {ogrepo}: Dirección IP del repositorio de ogLive.
- {oglive}: Dirección IP del servidor ogLive.
- {oglog}: Dirección IP del servidor de logs.
- {ogshare}: Dirección IP del servidor de archivos compartidos.
- {ogprof}: Valor booleano que indica si el perfil del cliente está habilitado o deshabilitado.
- {vga}: Modo VGA utilizado para la interfaz de usuario.
- {tftp_server_ip}: Dirección IP del servidor TFTP desde el cual se descargarán los archivos necesarios para el arranque del sistema

**Ejemplo de Solicitud:**

```bash
curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"name_template":"template1","ip": "192.168.1.100", "gateway": "192.168.1.1", "netmask": "255.255.255.0", "hostname": "pc01", "interface": "eth0", "group": "Aula_virtual", "ogrepo": "192.168.1.10", "oglive": "192.168.1.10", "oglog": "192.168.1.10", "ogshare": "192.168.1.10", "ogprof": false, "vga": 788, "tftp_server_ip": "172.17.8.71"}' http://example.com/ogboot/v1/pxe-templates


#!ipxe
set timeout 0
set timeout-style hidden

set ISODIR ogLive
set default 0
set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.1.100:192.168.1.1:192.168.1.1:255.255.255.0:pc01:eth0:none group=Aula_virtual ogrepo=192.168.1.10 oglive=192.168.1.10 oglog=192.168.1.10 ogshare=192.168.1.10 ogprof=false vga=788
time kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}
time initrd tftp://172.17.8.71/ogLive/oginitrd.img
boot

```


**Respuestas:**
- **Código 200 OK:** La plantilla de arranque se creó exitosamente.
  - **Contenido:** Plantilla generada a partir de los parámetros pasados en la petición.
- **Código 400 Bad Request:** La solicitud no pudo ser procesada debido a un error en los datos proporcionados en el cuerpo de la solicitud.
- **Código 500 Internal Server Error:** Ocurrió un error al crear la plantilla de arranque.


### Regenerar Plantilla

Regenera el contenido de una plantilla de arranque específica utilizando su nombre.

**URL:** `/ogboot/v1/pxe-templates/{nombre}`
**Método HTTP:** PUT

**Parámetros de la URL:**
- `{nombre}`: El nombre de la plantilla de arranque que se desea regenerar.

**Ejemplo de Solicitud:**

```bash
curl -X PUT -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxe-templates/template1
```

**Respuestas:**
- **Código 200 OK:** El contenido de la plantilla de arranque se regeneró exitosamente.
- **Código 404 Not Found:** No se encontró ninguna plantilla de arranque con el nombre especificado.
- **Código 500 Internal Server Error:** Ocurrió un error al regenerar la plantilla de arranque.

---

### Eliminar Plantilla

Elimina una plantilla de arranque específica utilizando su nombre.

**URL:** `/ogboot/v1/pxe-templates/{nombre}`
**Método HTTP:** DELETE

**Parámetros de la URL:**
- `{nombre}`: El nombre de la plantilla de arranque que se desea eliminar.

**Ejemplo de Solicitud:**

```bash
curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxe-templates/template1
```

**Respuestas:**
- **Código 200 OK:** La plantilla de arranque se eliminó correctamente.
- **Código 404 Not Found:** No se encontró ninguna plantilla de arranque con el nombre especificado.
- **Código 500 Internal Server Error:** Ocurrió un error al eliminar la plantilla de arranque.

