summaryrefslogtreecommitdiffstats
path: root/client/engine
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2016-04-08 11:28:22 +0000
committerramon <ramongomez@us.es>2016-04-08 11:28:22 +0000
commit1c9ef24ead6a0b44e3b6f001f73902938dc51e3f (patch)
tree6cc408a8b381ad0ed9aeec4bae205a02d71f7557 /client/engine
parent858b1b0a89d4f48483608263e3d7e7cf9fad6ab6 (diff)
#740 #744: Incluir funciones de bloqueo de disco en funciones {{{ogCreateDiskImage}}} y {{{ogRestoreDiskImage}}}.
git-svn-id: https://opengnsys.es/svn/branches/version1.1@4871 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client/engine')
-rwxr-xr-xclient/engine/Image.lib168
1 files changed, 82 insertions, 86 deletions
diff --git a/client/engine/Image.lib b/client/engine/Image.lib
index a1ab0b44..5eeab2f6 100755
--- a/client/engine/Image.lib
+++ b/client/engine/Image.lib
@@ -10,87 +10,6 @@
#/**
-# ogCreateDiskImage int_ndisk str_repo path_image [str_tools] [str_compressionlevel]
-#@brief Crea una imagen (copia de seguridad) de un disco completo.
-#@param int_ndisk nº de orden del disco
-#@param str_repo repositorio de imágenes (remoto o caché local)
-#@param path_image camino de la imagen (sin extensión)
-#@return (nada, por determinar)
-#@note repo = { REPO, CACHE }
-#@note Esta primera versión crea imágenes con dd comprimidas con gzip.
-#@exception OG_ERR_FORMAT formato incorrecto.
-#@exception OG_ERR_NOTFOUND fichero o dispositivo no encontrado.
-#@exception OG_ERR_LOCKED particion bloqueada por otra operación.
-#@exception OG_ERR_IMAGE error al crear la imagen del sistema.
-#@warning En pruebas iniciales
-#@todo Gestión de bloqueos de disco
-#@todo Comprobar si debe desmontarse la caché local
-#@todo Comprobar que no se crea la imagen en el propio disco
-#@version 1.1.0 - Primera versión para OpenGnsys con herramientas prefijadas.
-#@author Ramon Gomez, ETSII Universidad de Sevilla
-#@Date 2016/04/06
-#*/ ##
-function ogCreateDiskImage ()
-{
-# Variables locales
-local DISK PROGRAM IMGDIR IMGFILE IMGTYPE ERRCODE
-
-# Si se solicita, mostrar ayuda.
-if [ "$*" == "help" ]; then
- ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk path_dir str_image" \
- "$FUNCNAME 1 REPO /disk1"
- return
-fi
-# Error si no se reciben entre 3 y 5 parámetros.
-[ $# -ge 3 -a $# -le 5 ] || ogRaiseError $OG_ERR_FORMAT "$*" || return $?
-
-# Comprobar que no está bloqueada ni la partición, ni la imagen.
-DISK="$(ogDiskToDev $1)" || return $?
-### Pendiente: comprobar bloqueo de disco
-#if ogIsLocked $1; then
-# ogRaiseError $OG_ERR_LOCKED "$MSG_LOCKED $1"
-# return $?
-#fi
-
-IMGTYPE="dsk" # Extensión genérica de imágenes de disco.
-IMGDIR=$(ogGetParentPath "$2" "$3")
-[ -n "$IMGDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$2 $(dirname $3)" || return $?
-
-IMGFILE="$IMGDIR/$(basename "$3").$IMGTYPE"
-if ogIsImageLocked "$IMGFILE"; then
- ogRaiseError $OG_ERR_LOCKED "$MSG_IMAGE $3, $4"
- return $?
-fi
-# Generar la instruccion a ejecutar antes de aplicar los bloqueos.
-PROGRAM=$(ogCreateImageSyntax $DISK $IMGFILE dd gzip)
-# Desmontar todos los sistemas de archivos del disco, bloquear partición e imagen.
-ogUnmountAll $1 2>/dev/null
-### Pendiente: bloquear disco
-#ogLock $1 || return $?
-ogLockImage "$2" "$3.$IMGTYPE" || return $?
-
-# Crear Imagen.
-### Pendiente: desbloquear disco
-#trap "ogUnlock $1; ogUnlockImage "$3" "$4.$IMGTYPE"; rm -f $IMGFILE" 1 2 3 6 9
-trap "ogUnlockImage "$3" "$4.$IMGTYPE"; rm -f $IMGFILE" 1 2 3 6 9
-eval $PROGRAM
-
-# Controlar salida de error y desbloquear partición.
-ERRCODE=$?
-if [ $ERRCODE != 0 ]; then
- ogRaiseError $OG_ERR_IMAGE "$1 $2 $IMGFILE"
- rm -f "$IMGFILE"
-fi
-# Desbloquear partición e imagen.
-### Pendiente: desbloquear disco
-#ogUnlock $1
-ogUnlockImage "$2" "$3.$IMGTYPE"
-return $ERRCODE
-}
-
-
-
-#/**
# ogCreateImageSyntax path_device path_filename [str_tool] [str_compressionlevel]
#@brief Genera una cadena de texto con la instrucción para crear un fichero imagen
#@param path_device dispositivo Linux del sistema de archivos
@@ -287,6 +206,83 @@ fi
#/**
+# ogCreateDiskImage int_ndisk str_repo path_image [str_tools] [str_compressionlevel]
+#@brief Crea una imagen (copia de seguridad) de un disco completo.
+#@param int_ndisk nº de orden del disco
+#@param str_repo repositorio de imágenes (remoto o caché local)
+#@param path_image camino de la imagen (sin extensión)
+#@return (nada, por determinar)
+#@note repo = { REPO, CACHE }
+#@note Esta primera versión crea imágenes con dd comprimidas con gzip.
+#@exception OG_ERR_FORMAT formato incorrecto.
+#@exception OG_ERR_NOTFOUND fichero o dispositivo no encontrado.
+#@exception OG_ERR_LOCKED particion bloqueada por otra operación.
+#@exception OG_ERR_IMAGE error al crear la imagen del sistema.
+#@warning En pruebas iniciales
+#@todo Gestión de bloqueos de disco
+#@todo Comprobar si debe desmontarse la caché local
+#@todo Comprobar que no se crea la imagen en el propio disco
+#@version 1.1.0 - Primera versión para OpenGnsys con herramientas prefijadas.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@Date 2016/04/08
+#*/ ##
+function ogCreateDiskImage ()
+{
+# Variables locales
+local DISK PROGRAM IMGDIR IMGFILE IMGTYPE ERRCODE
+
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk path_dir str_image" \
+ "$FUNCNAME 1 REPO /disk1"
+ return
+fi
+# Error si no se reciben entre 3 y 5 parámetros.
+[ $# -ge 3 -a $# -le 5 ] || ogRaiseError $OG_ERR_FORMAT "$*" || return $?
+
+# Comprobar que no está bloqueada ni la partición, ni la imagen.
+DISK="$(ogDiskToDev $1)" || return $?
+if ogDiskIsLocked $1; then
+ ogRaiseError $OG_ERR_LOCKED "$MSG_LOCKED $1"
+ return $?
+fi
+
+IMGTYPE="dsk" # Extensión genérica de imágenes de disco.
+IMGDIR=$(ogGetParentPath "$2" "$3")
+[ -n "$IMGDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$2 $(dirname $3)" || return $?
+
+IMGFILE="$IMGDIR/$(basename "$3").$IMGTYPE"
+if ogIsImageLocked "$IMGFILE"; then
+ ogRaiseError $OG_ERR_LOCKED "$MSG_IMAGE $3, $4"
+ return $?
+fi
+# Generar la instruccion a ejecutar antes de aplicar los bloqueos.
+PROGRAM=$(ogCreateImageSyntax $DISK $IMGFILE dd gzip)
+# Desmontar todos los sistemas de archivos del disco, bloquear partición e imagen.
+ogUnmountAll $1 2>/dev/null
+### Pendiente: bloquear disco
+ogLockDisk $1 || return $?
+ogLockImage "$2" "$3.$IMGTYPE" || return $?
+
+# Crear Imagen.
+trap "ogUnlockDisk $1; ogUnlockImage "$3" "$4.$IMGTYPE"; rm -f $IMGFILE" 1 2 3 6 9
+eval $PROGRAM
+
+# Controlar salida de error y desbloquear partición.
+ERRCODE=$?
+if [ $ERRCODE != 0 ]; then
+ ogRaiseError $OG_ERR_IMAGE "$1 $2 $IMGFILE"
+ rm -f "$IMGFILE"
+fi
+# Desbloquear partición e imagen.
+ogUnlockDisk $1
+ogUnlockImage "$2" "$3.$IMGTYPE"
+return $ERRCODE
+}
+
+
+
+#/**
# ogCreateImage int_ndisk int_npartition str_repo path_image [str_tools] [str_compressionlevel]
#@brief Crea una imagen a partir de una partición.
#@param int_ndisk nº de orden del disco
@@ -602,7 +598,7 @@ touch $IMGDIR/$(basename "${!#}").lock 2>/dev/null || ogRaiseError $OG_ERR_NOTWR
#@exception OG_ERR_IMGSIZEPARTITION Tamaño de la particion es menor al tamaño de la imagen.
#@version 1.1.0 - Primera versión para OpenGnsys.
#@author Ramon Gomez, ETSII Universidad de Sevilla
-#@Date 2016/04/06
+#@Date 2016/04/08
#*/ ##
function ogRestoreDiskImage ()
{
@@ -624,7 +620,7 @@ IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE")
[ -r "$IMGFILE" ] || return $(ogRaiseError $OG_ERR_NOTFOUND " $3 $4"; echo $?)
# comprobamos consistencia de la imagen
-#ogGetImageInfo $IMGFILE >/dev/null || return $(ogRaiseError $OG_ERR_IMAGE " $1 $2"; echo $?)
+ogGetImageInfo $IMGFILE >/dev/null || return $(ogRaiseError $OG_ERR_IMAGE " $1 $2"; echo $?)
# Error si la imagen no cabe en la particion.
#IMGSIZE=$(ogGetImageSize "$1" "$2") || return $(ogRaiseError $OG_ERR_IMAGE " $1 $2"; echo $?)
#DISKSIZE=$(ogGetDiskSize $3)
@@ -641,8 +637,8 @@ fi
PROGRAM=$(ogRestoreImageSyntax $IMGFILE $DISK)
# Bloquear el disco
-#ogLock $3 || return $?
-#trap "ogUnlock $3" 1 2 3 6 9
+ogLockDisk $3 || return $?
+trap "ogUnlockDisk $3" 1 2 3 6 9
# Ejecutar restauración según el tipo de imagen.
eval $PROGRAM
@@ -651,7 +647,7 @@ ERRCODE=$?
if [ $ERRCODE != 0 ]; then
ogRaiseError $OG_ERR_IMAGE "$IMGFILE, $3, $4"
fi
-#ogUnlock $3 $4
+ogUnlockDisk $3 $4
return $ERRCODE
}