wiki:Version2/Desarrollo/Engine

ogr

ogr u OpenGnSys Runner es un comando que se ha desarrollado para la versión 2 para facilitar el uso del engine. Se basa en ejecutar comandos que se encuentre en el directorio que marque la variable global $OG_ENGINE_DIR. Si la variable no estuviera seteada se usará por defecto el valor: '/opt/opengnsys/engine/'. La herramienta ogr facilita la creación de scripts facilitando algunas tareas repetitivas:

  • La ayuda: ogr es capaz de leer la documentación de los scripts y mostrarla.
  • Errores: cuando un script termina con un valor de retorno distinto de 0, busca en la documentación y muestra la excepción que ha ocurrido.
  • Mensajes de completitud: los scripts pueden informar sobre el estado del trabajo que están realizando y ogr se encargará de transportar la información.

Para ello se ha creado la libreria ogr (libogr.py) que también puede ser usado por los scripts que necesiten funciones más avanzada de ogr como la ejecución de otros scripts.

Esto es un pequeño adelanto pero se espera agregar más funcionalidades a esta herramienta.

ogr getNumDisk
ogr help getNumDisk
ogr list web

Engine

El engine se encarga de todas las tareas a bajo nivel de OpenGnSys. Las operaciones van desde saber que IP tiene el cliente, como crear particiones, crear imágenes, arrancar una partición, etc. Existirán varios engines, uno por cada sistema operativo donde puede ejecutarse el JobExecuter?, de esta manera Opengnsys podrá controlar remotamente los cliente una vez hayan arrancado los clientes. Tiene especial importancia OGLive porque es donde están los scripts que realizan las operaciones de disco.

Requisitos para el Engine

Los scripts que componen el engine deben cumplir una serie de requisitos para que funcionen de manera correcta con la herramienta ogr.

Lenguajes

En principio no habría restricciones para el lenguaje que se use para hacer los scripts. La condición es que se encuentren instalados en el sistema operativo donde se vaya ejecutar el script.

Documentación

Ejemplo:

#/**
#@fn      ogr list module.
#@brief   Muestra la lista de script de un módulo.
#@param   module: módulo del que queremos mostrar la lista.
#@return  lista de script del módulo.
#@exception ARG_REQUIRED: Argumento requerido.
#@exception MODULE_NOTFOUND: Módulo no encontrado.
#@version 0.1 - Primera versión para OpenGnSys.
#@author  Alejandro Castaño, Wadobo Software S.L.
#@date    27/02/2011
#*/
  1. La documentación debe ir al principio del archivo antes de cualquier código ejecutable.
  2. Debe usarse la forma doxygen iniciandose con '/**' y terminando con '*/'.
  3. Los '#' son necesarios para que tanto bash, como python, como el lenguaje que se use lo tome como un comentario.
  4. Cada argumento de la documentación debe empezar en una línea nueva, aunque cada argumento pueda ocupar más de una línea.
  5. Tanto el autor como la fecha deben tener una versión encima, ya que se consideran fechas y autores de la correspondiente versión.

Excepciones

Cuando algo no fue como se esperaba hay que devolver un número mayor que 0. ogr considerará que el número con el que termino el script corresponderá a la posición que ocupa la excepción dentro de la documentación del script. Por ejemplo si en el ejemplo anterior el script acabará con un 1, ogr mostrará la excepción ARG_REQUIRED, si terminará con un 2, ogr mostrará la excepción MODULE_NOTFOUND.

Salida

Como el valor retorno se usa para controla las excepciones, la salida estándar se usa como la salida del comando. Por tanto cualquier información que un comando quiera devolver lo deberá hacer a través de su salida estandar que será recogida por ogr.

Salida de error

La salida de error puede usarse para dos cosas:

  1. Para dar más información en caso de excepción puede usarse. Esta información sólo se mostrará en caso de excepción.
  2. Si se quieren enviar mensajes de control deberá usarse la salida de error para ello. Estos mensajes tendrán un formato especial que ogr logrará reconocer y distinguir de los anteriores

Mensajes de control

Completitud de un trabajo

Para enviar mensaje de completitud de un trabajo se deberá escribir en la salida de error con el siguiente formato:

[34] Mensaje auxiliar

El mensaje auxiliar puede ser todo lo largo que se quiera hasta que se encuentre un salto de línea. Por ahora no hay más mensajes de control.

Last modified 3 years ago Last modified on Jul 14, 2017, 1:07:08 PM