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.
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.
La comunicación se establece a través de socket entre cada uno de estos programas con el resto:
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.
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.
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_
<COMANDO codigo="código_de_comando" nombre="nombre_del_comando" accion="identificador_de_la_acción_en_la_BD">
<PARAM nombre="nombre_del_parámetro" valor="valor_del_parámetro"/>
<PARAM nombre="nombre_del_parámetro" valor="valor_del_parámetro"/>
<PARAM nombre="nombre_del_parámetro" valor="valor_del_parámetro"/>
<PARAM nombre="nombre_del_parámetro" valor="valor_del_parámetro"/>
...
</COMANDO>
_2. Estructura de un mensaje tipo respuesta_
<RESPUESTA codigo="código_de_comando" respuesta="nombre_de_la_respuesta" accion="identificador_de_la_acción_en_la_BD" resultado="resultado_de_la_ejecución" ipaddr="dirección_IP_del_cliente">
<PARAM nombre="nombre_del_parámetro" valor="valor_del_parámetro"/>
<PARAM nombre="nombre_del_parámetro" valor="valor_del_parámetro"/>
<PARAM nombre="nombre_del_parámetro" valor="valor_del_parámetro"/>
<PARAM nombre="nombre_del_parámetro" valor="valor_del_parámetro"/>
...
</RESPUESTA >
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 |
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: 0fracaso, 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 |