feature/integration-ogagent #10

Merged
maranda merged 19 commits from feature/integration-ogagent into main 2024-08-27 11:39:07 +02:00
Collaborator

Para poder probar este PR, tan solo basta con hacerse un pull de esta rama y hacer:

docker compose up --build -d

Para agilizar la integracion, estos endpoints los he puesto sin seguridad, es decir que no hace falta desplegar la base de datos para loguearnos previamente.
Una vez desplegados los contenedores de manera correcta, en la url ponemos:

http://127.0.0.1:8080/docs

Deberia aparecernos el swagger de ogCore, con la docu de los endpoints integrados hasta la fecha. Buscamos los relacionados con ogAgent y ogAdmClient, y testeamos para ver que devuelve la salida necesaria.

Para poder probar este PR, tan solo basta con hacerse un pull de esta rama y hacer: `docker compose up --build -d ` Para agilizar la integracion, estos endpoints los he puesto sin seguridad, es decir que no hace falta desplegar la base de datos para loguearnos previamente. Una vez desplegados los contenedores de manera correcta, en la url ponemos: `http://127.0.0.1:8080/docs` Deberia aparecernos el swagger de ogCore, con la docu de los endpoints integrados hasta la fecha. Buscamos los relacionados con ogAgent y ogAdmClient, y testeamos para ver que devuelve la salida necesaria.
maranda added 2 commits 2024-08-21 09:54:55 +02:00
maranda requested review from nserrano 2024-08-21 09:55:14 +02:00
Collaborator

Creo que ha habido un pequeño problemilla de comunicación, pero es fácil de solucionar.

Veo que OGAgentController.php implementa inclusionCliente(), autoexecCliente(), enviaArchivo(), comandosPendientes() y disponibilidadComandos(). Estas no hacen falta en ese controlador, solo hacen falta agentStarted(), agentStopped(), agentLoggedIn() y agentLoggedOut().

Creo que ha habido un pequeño problemilla de comunicación, pero es fácil de solucionar. Veo que OGAgentController.php implementa inclusionCliente(), autoexecCliente(), enviaArchivo(), comandosPendientes() y disponibilidadComandos(). Estas no hacen falta en ese controlador, solo hacen falta agentStarted(), agentStopped(), agentLoggedIn() y agentLoggedOut().
maranda added 1 commit 2024-08-22 09:19:41 +02:00
Poster
Collaborator

@nserrano He actualizado el controlador con tus cambios. Me he dado cuenta que esos métodos que comentas, estaban duplicados. Aparecen en OgAgentController y en OgAdmClientController. Ha debido ser despiste mio.

Por eso, no se si lo que realmente necesitas era que los quitara de OGAgentController, o por el contrario, tambien de OgAdmClientController.

Espero haberme explicado mas o menos.

@nserrano He actualizado el controlador con tus cambios. Me he dado cuenta que esos métodos que comentas, estaban duplicados. Aparecen en OgAgentController y en OgAdmClientController. Ha debido ser despiste mio. Por eso, no se si lo que realmente necesitas era que los quitara de OGAgentController, o por el contrario, tambien de OgAdmClientController. Espero haberme explicado mas o menos.
Collaborator

Qué chulada el docker-compose up --build! Ya sé cómo voy a montar el opensearch, prometheus y compañía ^^

Me dio un pete al final porque el puerto 8080 está ocupado y lo cambié al 8090. Y al cargar la web me sale esto:

Warning: require_once(/var/www/html/vendor/autoload_runtime.php): Failed to open stream: No such file or directory in /var/www/html/public/index.php on line 5

Fatal error: Uncaught Error: Failed opening required '/var/www/html/vendor/autoload_runtime.php' (include_path='.:/usr/local/lib/php') in /var/www/html/public/index.php:5 Stack trace: #0 {main} thrown in /var/www/html/public/index.php on line 5

¿Puede tener que ver con el cambio de puerto? Porque si es así, libero el 8080 temporalmente y lo pruebo. Pero si es otra cosa...

Parece que no hay /var/www/html/vendor:

$ docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                                                                                    NAMES
867fb4f323c4   ogcore_nginx    "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes   0.0.0.0:8090->80/tcp, :::8090->80/tcp                                                    ogcore-nginx
6407e4cf1e10   ogcore_php      "docker-php-entrypoi…"   5 minutes ago   Up 5 minutes   9000/tcp                                                                                 ogcore-php
def8880ceb6e   mariadb:10.11   "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes   0.0.0.0:3336->3306/tcp, :::3336->3306/tcp, 0.0.0.0:49153->5432/tcp, :::49153->5432/tcp   ogcore-database

$ docker exec 867fb4f323c4 ls /var/www/html/
public

$ docker exec 6407e4cf1e10 ls /var/www/html/
README.md
bin
compose.override.yaml
composer.json
composer.lock
config
docker
docker-compose.yaml
migrations
phpunit.xml.dist
public
src
swagger-assets
symfony.lock
templates
tests
translations
Qué chulada el docker-compose up --build! Ya sé cómo voy a montar el opensearch, prometheus y compañía ^^ Me dio un pete al final porque el puerto 8080 está ocupado y lo cambié al 8090. Y al cargar la web me sale esto: > Warning: require_once(/var/www/html/vendor/autoload_runtime.php): Failed to open stream: No such file or directory in /var/www/html/public/index.php on line 5 > > Fatal error: Uncaught Error: Failed opening required '/var/www/html/vendor/autoload_runtime.php' (include_path='.:/usr/local/lib/php') in /var/www/html/public/index.php:5 Stack trace: #0 {main} thrown in /var/www/html/public/index.php on line 5 ¿Puede tener que ver con el cambio de puerto? Porque si es así, libero el 8080 temporalmente y lo pruebo. Pero si es otra cosa... Parece que no hay `/var/www/html/vendor`: ``` $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 867fb4f323c4 ogcore_nginx "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:8090->80/tcp, :::8090->80/tcp ogcore-nginx 6407e4cf1e10 ogcore_php "docker-php-entrypoi…" 5 minutes ago Up 5 minutes 9000/tcp ogcore-php def8880ceb6e mariadb:10.11 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:3336->3306/tcp, :::3336->3306/tcp, 0.0.0.0:49153->5432/tcp, :::49153->5432/tcp ogcore-database $ docker exec 867fb4f323c4 ls /var/www/html/ public $ docker exec 6407e4cf1e10 ls /var/www/html/ README.md bin compose.override.yaml composer.json composer.lock config docker docker-compose.yaml migrations phpunit.xml.dist public src swagger-assets symfony.lock templates tests translations ```
Collaborator

Test

Test
Poster
Collaborator

Si! la verdad es que el docker-compose up --build es tremendo, me parece super mágico todo.

Vale, viendo los fallos que me comentas, yo pensaba que si podrían ser cosa del puerto, pero es cosa mía. Pensaba que en el dockerfile había metido el composer install, y por alguna razón, lo deje fuera. Asi que culpa mia que no te puse las instrucciones completas. Está en el README, pero no aquí :(
Intenta ejecutar esto:

docker exec ogcore-php composer install
docker exec ogcore-php php bin/console lexik:jwt:generate-keypair --overwrite

Con el comando de arriba, se instalan las dependencias y ya deberías poder ver la carpeta "vendor", y el de abajo crea las claves publica y privadas que le dan la seguridad extra al proyecto.

Es muy probable que tengas que liberar tu puerto 8080 para poder probar ya que tengo puesto en el docker-compose que nginx salga expresamente por el 8080. Btw, si te supone mucho curro puedo cambiarte la configuración para este PR sin problema.

Perdona la confusión, quedo a la espera!

Si! la verdad es que el docker-compose up --build es tremendo, me parece super mágico todo. Vale, viendo los fallos que me comentas, yo pensaba que si podrían ser cosa del puerto, pero es cosa mía. Pensaba que en el dockerfile había metido el composer install, y por alguna razón, lo deje fuera. Asi que culpa mia que no te puse las instrucciones completas. Está en el README, pero no aquí :( Intenta ejecutar esto: ``` docker exec ogcore-php composer install docker exec ogcore-php php bin/console lexik:jwt:generate-keypair --overwrite ``` Con el comando de arriba, se instalan las dependencias y ya deberías poder ver la carpeta "vendor", y el de abajo crea las claves publica y privadas que le dan la seguridad extra al proyecto. Es muy probable que tengas que liberar tu puerto 8080 para poder probar ya que tengo puesto en el docker-compose que nginx salga expresamente por el 8080. Btw, si te supone mucho curro puedo cambiarte la configuración para este PR sin problema. Perdona la confusión, quedo a la espera!
Collaborator

Guay, ya funciona. Sin embargo cometí un errorcillo.

En la definición del api puse que todos los schemas de petición (o sea, aquellos cuyo nombre termina en "Req") recibieran primero los mismos 5 parámetros (iph, ido, npc, idc e ida) y luego alguno más dependiendo del caso. Eso lo hice porque en el lado de cliente hay un wrapper que los añade siempre, aunque sean nulos.

Pero resulta que en el lado de servidor no siempre se utilizan. En mi implementación python de juguete no pasaba nada, pero en tu código real, que hace una validación de los parámetros de cada llamada, me está petando porque el método InclusionCliente está enviando ido=null y el servidor responde {'message': 'Missing parameter: ido'}.

La solución es ajustar la definición del API para que el servidor valide solamente los parámetros reales que se van a usar. Es fácil, solo hay que volver a borrar código :). Aquí va el diff del yml. Te mando el yml nuevo por email.

--- openapi-ogcore-before.yaml  2024-08-26 10:13:17.760204923 +0200
+++ openapi-ogcore.yaml 2024-08-26 10:13:20.240190371 +0200
@@ -309,18 +309,10 @@
     InclusionClienteReq:
       type: object
       properties:
         iph:
           $ref: '#/components/schemas/iph'
-        ido:
-          $ref: '#/components/schemas/ido'
-        npc:
-          $ref: '#/components/schemas/npc'
-        idc:
-          $ref: '#/components/schemas/idc'
-        ida:
-          $ref: '#/components/schemas/ida'
         cfg:
           $ref: '#/components/schemas/cfg'
 
     InclusionClienteRes:
       type: object
@@ -343,18 +335,10 @@
     AutoexecClienteReq:
       type: object
       properties:
         iph:
           $ref: '#/components/schemas/iph'
-        ido:
-          $ref: '#/components/schemas/ido'
-        npc:
-          $ref: '#/components/schemas/npc'
-        idc:
-          $ref: '#/components/schemas/idc'
-        ida:
-          $ref: '#/components/schemas/ida'
         exe:
           $ref: '#/components/schemas/exe'
 
     AutoexecClienteRes:
       type: object
@@ -365,20 +349,10 @@
           $ref: '#/components/schemas/nfl'
 
     EnviaArchivoReq:
       type: object
       properties:
-        iph:
-          $ref: '#/components/schemas/iph'
-        ido:
-          $ref: '#/components/schemas/ido'
-        npc:
-          $ref: '#/components/schemas/npc'
-        idc:
-          $ref: '#/components/schemas/idc'
-        ida:
-          $ref: '#/components/schemas/ida'
         nfl:
           $ref: '#/components/schemas/nfl'
 
     EnviaArchivoRes:
       type: object
@@ -391,16 +365,10 @@
       properties:
         iph:
           $ref: '#/components/schemas/iph'
         ido:
           $ref: '#/components/schemas/ido'
-        npc:
-          $ref: '#/components/schemas/npc'
-        idc:
-          $ref: '#/components/schemas/idc'
-        ida:
-          $ref: '#/components/schemas/ida'
 
     ComandosPendientesRes:
       type: object
       properties:
         nfn:
@@ -409,15 +377,7 @@
     DisponibilidadComandosReq:
       type: object
       properties:
         iph:
           $ref: '#/components/schemas/iph'
-        ido:
-          $ref: '#/components/schemas/ido'
-        npc:
-          $ref: '#/components/schemas/npc'
-        idc:
-          $ref: '#/components/schemas/idc'
-        ida:
-          $ref: '#/components/schemas/ida'
         tpc:
           $ref: '#/components/schemas/tpc'
Guay, ya funciona. Sin embargo cometí un errorcillo. En la definición del api puse que todos los schemas de petición (o sea, aquellos cuyo nombre termina en "Req") recibieran primero los mismos 5 parámetros (`iph`, `ido`, `npc`, `idc` e `ida`) y luego alguno más dependiendo del caso. Eso lo hice porque en el lado de _cliente_ hay un wrapper que los añade siempre, aunque sean nulos. Pero resulta que en el lado de servidor no siempre se utilizan. En mi implementación python de juguete no pasaba nada, pero en tu código real, que hace una validación de los parámetros de cada llamada, me está petando porque el método `InclusionCliente` está enviando `ido=null` y el servidor responde `{'message': 'Missing parameter: ido'}`. La solución es ajustar la definición del API para que el servidor valide solamente los parámetros reales que se van a usar. Es fácil, solo hay que volver a borrar código :). Aquí va el diff del yml. Te mando el yml nuevo por email. ``` --- openapi-ogcore-before.yaml 2024-08-26 10:13:17.760204923 +0200 +++ openapi-ogcore.yaml 2024-08-26 10:13:20.240190371 +0200 @@ -309,18 +309,10 @@ InclusionClienteReq: type: object properties: iph: $ref: '#/components/schemas/iph' - ido: - $ref: '#/components/schemas/ido' - npc: - $ref: '#/components/schemas/npc' - idc: - $ref: '#/components/schemas/idc' - ida: - $ref: '#/components/schemas/ida' cfg: $ref: '#/components/schemas/cfg' InclusionClienteRes: type: object @@ -343,18 +335,10 @@ AutoexecClienteReq: type: object properties: iph: $ref: '#/components/schemas/iph' - ido: - $ref: '#/components/schemas/ido' - npc: - $ref: '#/components/schemas/npc' - idc: - $ref: '#/components/schemas/idc' - ida: - $ref: '#/components/schemas/ida' exe: $ref: '#/components/schemas/exe' AutoexecClienteRes: type: object @@ -365,20 +349,10 @@ $ref: '#/components/schemas/nfl' EnviaArchivoReq: type: object properties: - iph: - $ref: '#/components/schemas/iph' - ido: - $ref: '#/components/schemas/ido' - npc: - $ref: '#/components/schemas/npc' - idc: - $ref: '#/components/schemas/idc' - ida: - $ref: '#/components/schemas/ida' nfl: $ref: '#/components/schemas/nfl' EnviaArchivoRes: type: object @@ -391,16 +365,10 @@ properties: iph: $ref: '#/components/schemas/iph' ido: $ref: '#/components/schemas/ido' - npc: - $ref: '#/components/schemas/npc' - idc: - $ref: '#/components/schemas/idc' - ida: - $ref: '#/components/schemas/ida' ComandosPendientesRes: type: object properties: nfn: @@ -409,15 +377,7 @@ DisponibilidadComandosReq: type: object properties: iph: $ref: '#/components/schemas/iph' - ido: - $ref: '#/components/schemas/ido' - npc: - $ref: '#/components/schemas/npc' - idc: - $ref: '#/components/schemas/idc' - ida: - $ref: '#/components/schemas/ida' tpc: $ref: '#/components/schemas/tpc' ```
maranda added 1 commit 2024-08-26 11:47:02 +02:00
Poster
Collaborator

Hola!
Acabo de subir los cambios, echando un vistazo tanto al .yaml que me pasaste por email, como al diff de arriba. Creo que esta todo guay, pero quedo a la espera de que me digas.

Hola! Acabo de subir los cambios, echando un vistazo tanto al .yaml que me pasaste por email, como al diff de arriba. Creo que esta todo guay, pero quedo a la espera de que me digas.
maranda added 2 commits 2024-08-26 14:01:39 +02:00
maranda added 1 commit 2024-08-26 14:14:59 +02:00
maranda added 1 commit 2024-08-26 14:23:58 +02:00
maranda added 1 commit 2024-08-26 14:49:18 +02:00
maranda added 1 commit 2024-08-26 14:54:07 +02:00
maranda added 1 commit 2024-08-26 14:56:06 +02:00
maranda added 1 commit 2024-08-27 09:51:38 +02:00
maranda added 1 commit 2024-08-27 10:59:43 +02:00
maranda added 1 commit 2024-08-27 11:03:56 +02:00
maranda added 1 commit 2024-08-27 11:10:56 +02:00
maranda added 1 commit 2024-08-27 11:13:44 +02:00
maranda added 1 commit 2024-08-27 11:19:55 +02:00
maranda added 1 commit 2024-08-27 11:24:54 +02:00
maranda added 1 commit 2024-08-27 11:28:45 +02:00
Collaborator

Solo una nota rápida para dejar por escrito que, después de un par de zooms, este PR ya queda listo para mergear.

Solo una nota rápida para dejar por escrito que, después de un par de zooms, este PR ya queda listo para mergear.
maranda merged commit 1d7ff4b210 into main 2024-08-27 11:39:07 +02:00
maranda deleted branch feature/integration-ogagent 2024-08-27 11:39:07 +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/ogcore#10
There is no content yet.