[[TOC(heading=Índice)]] = API de funciones = == Introducción == Para el desarrollo de la interfaz de programación del proyecto deben seguirse estas reglas de estilo: * Las reglas de la API se cumplirán independientemente del lenguaje de programación utilizado. * La documentación del código debe se r compatible con [http://www.stack.nl/~dimitri/doxygen/ Doxygen]. * Debe incluirse toda la información necesaria en las cabeceras de las funciones (descripción, formato, salidas, notas, etc.). * Deben incluirse comentarios descriptivos en los bloques de código. * Las funciones devolverán un código de salida al estilo Unix, que indique si se ha ejecutado correctamente o se ha producido alguno de los tipos de errores definidos. En caso de error, también mostrará el mensaje correspondiente. * Todos los nombres de funciones y variables deben estar escritos en inglés, deben ser descriptivos y fáciles de recordar. * Nombres de funciones al estilo Rembo-C (sólo con las iniciales en mayúsculas), pero sin copiarlos de Rembo-C. Según se estime oportuno, los nombres de funciones podrán tener un prefijo indicativo del proyecto o del componente del proyecto al que pertenece. * Las constantes y variables globales deben ir escritas en mayúsculas. == Parámetros == Los parámetros de las funciones deben estar unificados, ésto es, deben ser comprensibles según su tipo y su contexto. Tipos de parámetros: * Disco: identificado por su número de orden. * Partición: número de orden de la partición. * Identificador de partición: dupla de valores formada por disco y partición (2 parámetros). * Sistema de archivos: mnemónico predefinido identificador del tipo de sistema de archivos. * Tamaño: número entero con el tamaño de la partición en KB. * Definición de partición: pareja de valores formada por sistema de archivos y tamaño, separados por ":" (1 parámetro compuesto). * Repositorio: dirección IP del repositorio de imágenes. * Caché local: dirección IP del cliente local o {{{localhost}}} * Camino: camino de un fichero relativo a su partición, a su repositorio o su caché local. * Camino completo: parámetro compuesto por identificador de partición o repositorio y el camino relativo de un fichero (2 o 3 parámetros). * Fichero de imagen: ... * ... == Parámetros futuras versión == Los actuales sistemas de los que parte !OpenGnsys (Hidra, Brutalix, EAC) comparten los parámetros indicados en el apartado anterior. Con dichos parámetros ciertas funcionalidades no podrán ser implementadas, o deben de realizarse de una manera no muy clara. Un ejemplo claro es !RestorePartitionFromPartition (EAC), donde ambas particiones pueden ser locales, o pueden ser remotas, es decir un equipo envia por multicast su partión a multiples particiones remotas. La sintaxis podría set tal como {{{RecursoOrigen RecursoDestino}}}. Donde cada Recurso estaría compuesto por unos valores que lo identifiquen. De esta manera tendríamos los siguientes recursos simples: (,) {{{ * DISK (disco local) DISK:int_disk,int_partition * DISKREMOTE (disco remoto) DISKREMOTE:str_IP,int_disk,int_partition * CDROM (cdrom,dvd) CDROM: * USB (dispositivos usb) USB: * RAM (particiones en ram) RAM: * LOOP (dispositivos loop LOOP: }}} y los siguientes recursos compuestos: (;) {{{ * FILE (archivo) FILE//DISK|diskRemote|crdrom|usb|ram|loop|variables$REPO$CACHE;subdirectorio;fichero }}} Algunos ejemplos: {{{ *RestorePartitionToPartition Disk:1,1 Disk:1,2 *RestorePartitionToPartition DiskRemote:1,2:172.16.72.242 DISK:1,2 *UpdateCache File//$GLOBAL:hdimages/curso0809/:xpbase0.lzop1 *RestoreImageToPartition File//$CACHE;hdimages/curso0809/;xpbase0.lzop1 Disk:1,1 *DeployImageToPartition File//$GLOBAL;hdimages/curso0809/;xpbase0.lzop1 Disk:1,1 *CapturePartitionToImage Disk:1,1 File//$GLOBAL;hdimages/curso0809/;xpbase0.lzop }}} == Errores y mensajes == Las funciones deben realizar una comprobación y un tratamiento adecuados de posibles errores y fallos, evitando realizar operaciones innecesarias o incorrectas. Se generarán mensajes de error comprensibles y adecuados que ofrezcan información para detectar y corregir el problema, además de devolver un código de error que pueda ser tratado por otras funciones de la API. Asimismo, se deben presentar mensajes informativos normalizados sobre el estado y la evolución de las operaciones realizadas. La implementación de las funciones de la API tendrá en cuenta técnicas de internacionalización, para poder presentar los mensajes y los errores en el idioma del usuario. ''(definir lista de errores y formatos de mensajes)'' == Funciones del motor de clonación == Las funciones de la API se agrupan lógicamente en librerías o clases (según el lenguaje de programación utilizado), con unas características comunes. Lista de librerías o clases (en orden alfabético): * [doxygen:Boot Boot] - funciones de postconfiguración y arranque de sistemas de archivos * [doxygen:Disk Disk] - funciones de gestión de discos * [doxygen:File File] - funciones de control de ficheros y directorios * [doxygen:FileSystem FileSystem] - funciones de administración de sistemas de archivos * [doxygen:Image Image] - funciones de creación y clonación de imágenes de sistemas de archivos * [doxygen:Install Install] - funciones de instalación del sistema * [doxygen:Inventory Inventory] - funciones de inventario de clientes * [doxygen:String String] - funciones de tratamiento de cadenas de caracteres * [doxygen:System System] - funciones básicas del sistema ''(lista de funciones para clonar "a mano" o desde scripts)'' == Funciones del gestor web == ''(lista de funciones ejecutadas por el gestor web)''