ogboot_symfony #3

Merged
lgromero merged 36 commits from ogboot_symfony into main 2024-07-15 11:24:43 +02:00
Collaborator

Descripción

El objetivo de esta PR es cerrar la histortia #208 que consiste en crear los endpoints para la gestión de las imágenes oglive, creación de ficheros de arranque pxe para cada máquina así como plantillas que se usan para esos mismos ficheros de arranque.

El código del API del controlador se encuentra en ogdhcp/src/OgBoot/Controller/DhcpController.php. Ahí viene la especificación de cada endpoint junto con unos comentarios que procesa swagger para la documentación.

Instalación Symfony

Instalar Dependencias de Symfony
  • Ejecutar Composer para instalar las dependencias:
    cd /path/to/your/ogboot/bin
    ./composer.phar install
    
Generar el Archivo Swagger
  • Generar el archivo swagger.json para la documentación de la API:
  /path/to/your/ogboot/vendor/bin/openapi /path/to/your/ogboot/src/OgBootBundle/Controller/ -o 
  /path/to/your/ogboot/public/swagger.json

Instrucciones para Instalar el Demonio de Ogboot en el Directorio de Trabajo del Revisor

1. Crear Usuario y Grupo ogboot
  • Crear el usuario y grupo ogboot:

    sudo groupadd ogboot
    sudo useradd -g ogboot -m -s /bin/bash ogboot
    
  • Modificar el propietario de todos los directorios y archivos del repositorio. En mi caso /home/luis/opengnsysProjects/ogboot:

    sudo chown -R ogboot:ogboot /home/luis/opengnsysProjects/ogboot
    

2. Copiar y Configurar el Script del Demonio

  • Modifica el script bin/oglive_daemon.py, en la línea 19, para que llame al script oglivecli en el directorio correcto. En mi caso mi directorio del respositorio es /home/luis/opengnsysProjects/ogboot:
command_to_run = ['sudo', '/path/to/your/ogboot/project/bin/oglivecli', action] + args

3. Modificar el Script oglivecli

  • Modifica bin/oglivecli, en la línea 43, para que el script apunte al directorio de tu repositorio. En mi caso mi directorio sería /home/luis/opengnsysProjects/ogboot
    OPENGNSYS=/home/luis/opengnsysProjects/ogboot
    

4. Copiar el Script del Demonio y Configurar el Servicio

  • Crear el archivo de servicio systemd oglive_daemon.service en /etc/systemd/system/ con el siguiente contenido. Modifica la línea ExecStart=/path/to/your/ogboot/project/bin/oglive_daemon.py para que apunte donde tienes alojado tu script tn python, en mi caso /home/luis/opengnsysProjects/ogboot/bin/oglive_daemon.py.
    [Unit]
    Description=OgLive Daemon Service
    After=network.target
    
    [Service]
    ExecStart=/path/to/your/ogboot/project/bin/oglive_daemon.py
    User=root
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

5. Recargar Systemd y Habilitar el Servicio

  • Recargar systemd, habilitar y arrancar el servicio:
    sudo systemctl daemon-reload
    sudo systemctl enable oglive_daemon.service
    sudo systemctl start oglive_daemon.service
    

6. Verificar el Demonio y Probar

  • Verificar que el demonio está corriendo:

    systemctl status oglive_daemon.service
    
  • Probar el demonio con una petición:

    echo '{"action": "disk_usage", "args": []}' | nc -U /var/run/oglive/oglive_daemon.sock
    

7. Levantar listener de php:

En el directorio del repositorio:

sudo -u ogboot php -S localhost:8001 -t public/

En caso de que se esté usando una máquina remota sustituir localhost por la ip de la máquina

Abrir navegador con la ip del listener
Escribir en el navegador localhost:8001/index.html. Se abrirá la página de swagger. Escribir en el buscador de arriba http://localhost:8001/swagger.json o bien la ip de la máquina si has levantado el listener con IP para servir el swagger generado a partir de la documentación del controlador.

En esa página se podrá ver los distintos endpoints disponibles de la aplicación. Ejecutar cada uno y revisar que devuelve correctamente los cambios.

Endpoints de Ogboot

Método HTTP Endpoint Descripción
GET /ogboot/v1/config Obtener la configuración de ogboot.
GET /ogboot/v1/oglives/isos Obtener todos los ogLive disponibles para descargar.
GET /ogboot/v1/oglives Obtener todos los ogLive instalados.
POST /ogboot/v1/oglives/install Instalar un ogLive.
DELETE /ogboot/v1/oglives/{checksum} Desinstalar un ogLive específico.
GET /ogboot/v1/oglives/{checksum} Obtener información de un ogLive específico instalado.
GET /ogboot/v1/oglives/default Obtener información del ogLive por defecto.
POST /ogboot/v1/oglives/default Establecer un ogLive como el predeterminado.
GET /ogboot/v1/pxe Obtener todos los PXE configurados.
POST /ogboot/v1/pxe Crear un nuevo PXE.
GET /ogboot/v1/pxe/{id} Obtener detalles de un PXE específico.
PUT /ogboot/v1/pxe/{id} Actualizar un PXE específico.
DELETE /ogboot/v1/pxe/{id} Eliminar un PXE específico.
GET /ogboot/v1/pxe-templates Obtener todos los templates de PXE configurados.
POST /ogboot/v1/pxe-templates Crear un nuevo template de PXE.
GET /ogboot/v1/pxe-templates/{id} Obtener detalles de un template de PXE específico.
PUT /ogboot/v1/pxe-templates/{id} Actualizar un template de PXE específico.
DELETE /ogboot/v1/pxe-templates/{id} Eliminar un template de PXE específico.

Comandos CURL

# Obtener la configuración de ogboot
curl -X GET http://<host>/ogboot/v1/config

# Obtener todos los ogLive disponibles para descargar
curl -X GET http://<host>/ogboot/v1/oglives/isos

# Obtener todos los ogLive instalados
curl -X GET http://<host>/ogboot/v1/oglives

# Instalar un ogLive
curl -X POST http://<host>/ogboot/v1/oglives/install -H "Content-Type: application/json" -d '{"isoname": "<isoname>"}'

# Desinstalar un ogLive específico
curl -X DELETE http://<host>/ogboot/v1/oglives/<checksum>

# Obtener información de un ogLive específico instalado
curl -X GET http://<host>/ogboot/v1/oglives/<checksum>

# Obtener información del ogLive por defecto
curl -X GET http://<host>/ogboot/v1/oglives/default

# Establecer un ogLive como el predeterminado
curl -X POST http://<host>/ogboot/v1/oglives/default -H "Content-Type: application/json" -d '{"checksum": "<checksum>"}'

# Obtener todos los PXE configurados
curl -X GET http://<host>/ogboot/v1/pxe

# Crear un nuevo PXE
curl -X POST http://<host>/ogboot/v1/pxe -H "Content-Type: application/json" -d '{"name": "<pxe_name>", "config": "<pxe_config>"}'

# Obtener detalles de un PXE específico
curl -X GET http://<host>/ogboot/v1/pxe/<id>

# Actualizar un PXE específico
curl -X PUT http://<host>/ogboot/v1/pxe/<id> -H "Content-Type: application/json" -d '{"name": "<pxe_name>", "config": "<pxe_config>"}'

# Eliminar un PXE específico
curl -X DELETE http://<host>/ogboot/v1/pxe/<id>

# Obtener todos los templates de PXE configurados
curl -X GET http://<host>/ogboot/v1/pxe-templates
# Resto del script
# Crear un nuevo template de PXE
curl -X POST http://<host>/ogboot/v1/pxe-templates -H "Content-Type: application/json" -d '{"name": "<template_name>", "config": "<template_config>"}'

# Obtener detalles de un template de PXE específico
curl -X GET http://<host>/ogboot/v1/pxe-templates/<id>

# Actualizar un template de PXE específico
curl -X PUT http://<host>/ogboot/v1/pxe-templates/<id> -H "Content-Type: application/json" -d '{"name": "<template_name>", "config": "<template_config>"}'

# Eliminar un template de PXE específico
curl -X DELETE http://<host>/ogboot/v1/pxe-templates/<id>
#### Descripción El objetivo de esta PR es cerrar la histortia #208 que consiste en crear los endpoints para la gestión de las imágenes oglive, creación de ficheros de arranque pxe para cada máquina así como plantillas que se usan para esos mismos ficheros de arranque. El código del API del controlador se encuentra en ogdhcp/src/OgBoot/Controller/DhcpController.php. Ahí viene la especificación de cada endpoint junto con unos comentarios que procesa swagger para la documentación. #### Instalación Symfony ##### Instalar Dependencias de Symfony - Ejecutar Composer para instalar las dependencias: ```bash cd /path/to/your/ogboot/bin ./composer.phar install ``` ##### Generar el Archivo Swagger - Generar el archivo `swagger.json` para la documentación de la API: ```bash /path/to/your/ogboot/vendor/bin/openapi /path/to/your/ogboot/src/OgBootBundle/Controller/ -o /path/to/your/ogboot/public/swagger.json ``` ### Instrucciones para Instalar el Demonio de Ogboot en el Directorio de Trabajo del Revisor ##### 1. Crear Usuario y Grupo `ogboot` - Crear el usuario y grupo `ogboot`: ```bash sudo groupadd ogboot sudo useradd -g ogboot -m -s /bin/bash ogboot ``` - Modificar el propietario de todos los directorios y archivos del repositorio. En mi caso /home/luis/opengnsysProjects/ogboot: ```bash sudo chown -R ogboot:ogboot /home/luis/opengnsysProjects/ogboot ``` #### 2. Copiar y Configurar el Script del Demonio - Modifica el script `bin/oglive_daemon.py`, en la línea 19, para que llame al script `oglivecli` en el directorio correcto. En mi caso mi directorio del respositorio es `/home/luis/opengnsysProjects/ogboot`: ``` command_to_run = ['sudo', '/path/to/your/ogboot/project/bin/oglivecli', action] + args ``` #### 3. Modificar el Script `oglivecli` - Modifica `bin/oglivecli`, en la línea 43, para que el script apunte al directorio de tu repositorio. En mi caso mi directorio sería `/home/luis/opengnsysProjects/ogboot` ```bash OPENGNSYS=/home/luis/opengnsysProjects/ogboot ``` #### 4. Copiar el Script del Demonio y Configurar el Servicio - Crear el archivo de servicio systemd `oglive_daemon.service` en `/etc/systemd/system/` con el siguiente contenido. Modifica la línea `ExecStart=/path/to/your/ogboot/project/bin/oglive_daemon.py` para que apunte donde tienes alojado tu script tn python, en mi caso `/home/luis/opengnsysProjects/ogboot/bin/oglive_daemon.py`. ```ini [Unit] Description=OgLive Daemon Service After=network.target [Service] ExecStart=/path/to/your/ogboot/project/bin/oglive_daemon.py User=root Restart=always [Install] WantedBy=multi-user.target ``` #### 5. Recargar Systemd y Habilitar el Servicio - Recargar systemd, habilitar y arrancar el servicio: ```bash sudo systemctl daemon-reload sudo systemctl enable oglive_daemon.service sudo systemctl start oglive_daemon.service ``` #### 6. Verificar el Demonio y Probar - Verificar que el demonio está corriendo: ```bash systemctl status oglive_daemon.service ``` - Probar el demonio con una petición: ```bash echo '{"action": "disk_usage", "args": []}' | nc -U /var/run/oglive/oglive_daemon.sock ``` #### 7. Levantar listener de php: En el directorio del repositorio: ``` sudo -u ogboot php -S localhost:8001 -t public/ ``` En caso de que se esté usando una máquina remota sustituir localhost por la ip de la máquina Abrir navegador con la ip del listener Escribir en el navegador localhost:8001/index.html. Se abrirá la página de swagger. Escribir en el buscador de arriba http://localhost:8001/swagger.json o bien la ip de la máquina si has levantado el listener con IP para servir el swagger generado a partir de la documentación del controlador. En esa página se podrá ver los distintos endpoints disponibles de la aplicación. Ejecutar cada uno y revisar que devuelve correctamente los cambios. ### Endpoints de Ogboot | Método HTTP | Endpoint | Descripción | |-------------|-----------------------------------------|-----------------------------------------------------------------------------| | GET | /ogboot/v1/config | Obtener la configuración de ogboot. | | GET | /ogboot/v1/oglives/isos | Obtener todos los ogLive disponibles para descargar. | | GET | /ogboot/v1/oglives | Obtener todos los ogLive instalados. | | POST | /ogboot/v1/oglives/install | Instalar un ogLive. | | DELETE | /ogboot/v1/oglives/{checksum} | Desinstalar un ogLive específico. | | GET | /ogboot/v1/oglives/{checksum} | Obtener información de un ogLive específico instalado. | | GET | /ogboot/v1/oglives/default | Obtener información del ogLive por defecto. | | POST | /ogboot/v1/oglives/default | Establecer un ogLive como el predeterminado. | | GET | /ogboot/v1/pxe | Obtener todos los PXE configurados. | | POST | /ogboot/v1/pxe | Crear un nuevo PXE. | | GET | /ogboot/v1/pxe/{id} | Obtener detalles de un PXE específico. | | PUT | /ogboot/v1/pxe/{id} | Actualizar un PXE específico. | | DELETE | /ogboot/v1/pxe/{id} | Eliminar un PXE específico. | | GET | /ogboot/v1/pxe-templates | Obtener todos los templates de PXE configurados. | | POST | /ogboot/v1/pxe-templates | Crear un nuevo template de PXE. | | GET | /ogboot/v1/pxe-templates/{id} | Obtener detalles de un template de PXE específico. | | PUT | /ogboot/v1/pxe-templates/{id} | Actualizar un template de PXE específico. | | DELETE | /ogboot/v1/pxe-templates/{id} | Eliminar un template de PXE específico. | ### Comandos CURL ```bash # Obtener la configuración de ogboot curl -X GET http://<host>/ogboot/v1/config # Obtener todos los ogLive disponibles para descargar curl -X GET http://<host>/ogboot/v1/oglives/isos # Obtener todos los ogLive instalados curl -X GET http://<host>/ogboot/v1/oglives # Instalar un ogLive curl -X POST http://<host>/ogboot/v1/oglives/install -H "Content-Type: application/json" -d '{"isoname": "<isoname>"}' # Desinstalar un ogLive específico curl -X DELETE http://<host>/ogboot/v1/oglives/<checksum> # Obtener información de un ogLive específico instalado curl -X GET http://<host>/ogboot/v1/oglives/<checksum> # Obtener información del ogLive por defecto curl -X GET http://<host>/ogboot/v1/oglives/default # Establecer un ogLive como el predeterminado curl -X POST http://<host>/ogboot/v1/oglives/default -H "Content-Type: application/json" -d '{"checksum": "<checksum>"}' # Obtener todos los PXE configurados curl -X GET http://<host>/ogboot/v1/pxe # Crear un nuevo PXE curl -X POST http://<host>/ogboot/v1/pxe -H "Content-Type: application/json" -d '{"name": "<pxe_name>", "config": "<pxe_config>"}' # Obtener detalles de un PXE específico curl -X GET http://<host>/ogboot/v1/pxe/<id> # Actualizar un PXE específico curl -X PUT http://<host>/ogboot/v1/pxe/<id> -H "Content-Type: application/json" -d '{"name": "<pxe_name>", "config": "<pxe_config>"}' # Eliminar un PXE específico curl -X DELETE http://<host>/ogboot/v1/pxe/<id> # Obtener todos los templates de PXE configurados curl -X GET http://<host>/ogboot/v1/pxe-templates # Resto del script # Crear un nuevo template de PXE curl -X POST http://<host>/ogboot/v1/pxe-templates -H "Content-Type: application/json" -d '{"name": "<template_name>", "config": "<template_config>"}' # Obtener detalles de un template de PXE específico curl -X GET http://<host>/ogboot/v1/pxe-templates/<id> # Actualizar un template de PXE específico curl -X PUT http://<host>/ogboot/v1/pxe-templates/<id> -H "Content-Type: application/json" -d '{"name": "<template_name>", "config": "<template_config>"}' # Eliminar un template de PXE específico curl -X DELETE http://<host>/ogboot/v1/pxe-templates/<id> ```
lgromero added 14 commits 2024-05-27 12:54:14 +02:00
lgromero added 1 commit 2024-05-27 14:39:06 +02:00
lgromero added 1 commit 2024-05-28 06:57:21 +02:00
lgromero added 1 commit 2024-05-28 06:58:08 +02:00
lgromero added 1 commit 2024-05-28 09:27:36 +02:00
lgromero added 1 commit 2024-05-28 09:28:05 +02:00
lgromero added 1 commit 2024-05-29 16:59:13 +02:00
lgromero added 1 commit 2024-05-30 17:10:05 +02:00
lgromero added 1 commit 2024-05-30 22:33:03 +02:00
lgromero added 1 commit 2024-06-05 10:15:34 +02:00
lgromero added 1 commit 2024-06-07 15:31:51 +02:00
lgromero added 1 commit 2024-06-12 13:00:20 +02:00
lgromero added 2 commits 2024-06-21 16:21:00 +02:00
lgromero added 1 commit 2024-06-21 16:23:00 +02:00
lgromero added 1 commit 2024-06-24 13:47:26 +02:00
lgromero added 1 commit 2024-06-24 16:24:06 +02:00
lgromero added 1 commit 2024-06-25 04:40:42 +02:00
lgromero added 1 commit 2024-06-26 13:02:34 +02:00
lgromero added 1 commit 2024-06-26 13:03:53 +02:00
lgromero added 1 commit 2024-07-08 14:37:17 +02:00
lgromero added 1 commit 2024-07-10 13:12:05 +02:00
Collaborator

PR desplegado correctamente.

  • Swagger desplegado.
  • Daemon funcionando y corriendo
  • Llamadas a la API correctas

Notas a mejorar:
En Swagger, al iniciar el servidor de prueba de Symfony, poner en el buscador automaticamente la URL "localhost" para no tener que esperar.

PR desplegado correctamente. - Swagger desplegado. - Daemon funcionando y corriendo - Llamadas a la API correctas Notas a mejorar: En Swagger, al iniciar el servidor de prueba de Symfony, poner en el buscador automaticamente la URL "localhost" para no tener que esperar.
lgromero added 1 commit 2024-07-15 11:24:13 +02:00
lgromero merged commit 3dd95881d4 into main 2024-07-15 11:24:43 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: opengnsys/ogboot#3
There is no content yet.