----
= '''***ATENCIÓN.- Esta documentación para desarrolladores del proyecto pertenece a la nueva versión de opengnsys y no es aplicable a la actual***''' =
----
== INTRODUCCIÓN ==
Un sistema opengnsys completo está formado por un '''''"servidor de administración"''''', una o varias aulas de ordenadores a los que llamaremos '''''"clientes"''''' y uno o varios servidores opengnsys, también llamados '''''"repositorios"''''', que son los encargados de asignar direcciones ipes a dichos clientes además de enviarles, vía PXE, una pequeña distribución linux con la que arrancarán.
[[Image(escenario.png)]]
En este contexto tiene lugar continuamente una '''comunicación bidireccional''' entre los distintos elementos del sistema. Esta comunicación se implementa mediante mensajes que son envíados por estas máquinas a través de la red. Los encargados de enviar y recibir estos mensajes son unos '''programas residentes''' que se ejecutan a modo de '''servicios o clientes'''.
* '''ogAdmServer''': Es un servicio que se ejecuta en el "servidor de administración".
* '''ogAdmRepo''': Es un servicio que se ejecuta en el "servidor opengnsys".
* '''ogAdmClient''': Es un cliente que se ejecuta en el "cliente opengnsys".
La comunicación se establece a través de socket entre cada uno de estos programas con el resto:
[[Image(triomsg.png)]]
== Tipos de mensajes ==
* '''Comados''': ''Son mensajes enviados desde el servidor y que tienen como destinatarios tanto los clientes como los repositorios''. Con ellos se llevan a cabo todo tipo de acciones como: Restaurar imágenes, crear y formatear particiones, Recuperar inventarios de hardware y de software, etc.[[BR]]
* '''Respuestas''': ''Son mensajes enviados desde los clientes o repositorios hacía el servidor de administración'' como respuesta a la ejecución de algún comando previo. En este tipo de mensaje además del resultado de la ejecución, puede enviarse información anexa relacionada con la acción realizada: nueva estructura de particiones, software instalado, inventario hardware, etc. Toda esta información proveniente de los clientes y de los repositorios es registrada en la base de datos o los logs del sistema.
== Estructura de los mensajes ==
Los mensajes emitidos tanto por el servidor como por los clientes o repositorios son enviados por la red y viajan encapsulados en un paquete de red o datagrama. La estructura puede variar según se trate de un mensaje tipo "comando" o un mensaje tipo "respuesta", pero en ambos casos están descritos en código XML.
'''''1. Estructura de un mensaje tipo comando'''''
{{{
...
}}}
'''''2. Estructura de un mensaje tipo respuesta'''''
{{{
...
}}}
== Tabla de atributos de los mensajes tipo comandos ==
||''Nodo''||''Atributo''||''Valor''||''Descripción''||
||COMANDO||codigo||cadena||Código del comando (Identificador del comando en la Tabla "Comandos" de la BD)||
||COMANDO||nombre||cadena||Nombre de la función que procesa el comando (Dentro del ejecutable "cliente opengnsys")||
||COMANDO||accion||cadena||Código de la acción (Identificador de la acción en la tabla acciones de la BD)||
||PARAM ||nombre||cadena||Nombre del párametro||
||PARAM ||valor||cadena o número||Valor del párametro||
== Tabla de atributos de los mensajes tipo respuestas ==
||''Nodo''||''Atributo''||''Valor''||''Descripción''||
||RESPUESTA ||codigo||cadena||Código del comando (Identificador del comando en la Tabla "Comandos" de la BD)||
||RESPUESTA ||respuesta||cadena||Nombre de la función que procesa el comando (Dentro del ejecutable "servidor de administración")||
||RESPUESTA ||accion||cadena||Código de la acción (Identificador de la acción en la tabla acciones de la BD)||
||RESPUESTA ||resultado||número||Resultado de la ejecución: 0 fracaso, 1=éxito||
||RESPUESTA ||ipaddr||cadena||Dirección IP del cliente que responde||
||PARAM ||nombre||cadena||Nombre del párametro||
||PARAM ||valor||cadena o número||Valor del párametro||