summaryrefslogtreecommitdiffstats
path: root/admin/Sources/Services/ogAdmRepoAux
diff options
context:
space:
mode:
Diffstat (limited to 'admin/Sources/Services/ogAdmRepoAux')
-rwxr-xr-xadmin/Sources/Services/ogAdmRepoAux110
1 files changed, 109 insertions, 1 deletions
diff --git a/admin/Sources/Services/ogAdmRepoAux b/admin/Sources/Services/ogAdmRepoAux
index 21c0e4f1..d898036e 100755
--- a/admin/Sources/Services/ogAdmRepoAux
+++ b/admin/Sources/Services/ogAdmRepoAux
@@ -1,5 +1,7 @@
#!/bin/bash
PARM=`cat`
+#PARM=$@
+
#TODO: ticket 379
#buscar parametro de identificador de operacion.
@@ -9,6 +11,7 @@ PARM=`cat`
#Si esta seteada (en progreso) salir.
+TIME=$SECONDS
BASEDIR=/opt/opengnsys
PATH=$PATH:$BASEDIR/bin
@@ -16,6 +19,9 @@ REPONAME=ogAdmRepo
REPOLOG=$BASEDIR/log/$REPONAME.log
MCASTLOGBASE=$BASEDIR/log/mcastlog
MCASTLOG=$MCASTLOGBASE/ogAdmRepoMcast.`date +%Y%m%d-%H%M%S`
+REPODIR="$BASEDIR/images/"
+
+BACKUP=$(grep BACKUP /opt/opengnsys/client/etc/engine.cfg| cut -d= -f2)
# Añade registro de incidencias.
function echolog () {
@@ -24,12 +30,12 @@ function echolog () {
mkdir -p $MCASTLOGBASE
+
PARM1=$(echo $PARM | cut -f1 -d" ")
PARM2=$(echo $PARM | cut -f2 -d" ")
PARM3=$(echo $PARM | cut -f3 -d" ")
PARM4=$(echo $PARM | cut -f4 -d" ")
-
case "$PARM1" in
START_MULTICAST)
#1 START_MULTICAST
@@ -48,6 +54,108 @@ case "$PARM1" in
return 3 ;;
esac
;;
+ CREATE_IMAGE)
+ # Creamos/Redimensionamos el fichero de imagen y lo montamos para que se pueda escribir sobre el
+ #1 CREATE_IMAGE
+ #2 nombre imagen
+ #3 extension imagen
+ #4 tamaño imagen
+ IMGEXT="$PARM3"
+ IMGFILE="$REPODIR/$PARM2.$IMGEXT"
+ IMGDIR="$(dirname $IMGFILE)"
+ [ -d $IMGDIR ] || mkdir -p $IMGDIR
+
+ MOUNTDIR="$REPODIR/mount/${PARM2}"
+ [ "$IMGEXT" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGEXT"
+
+ # Aumentamos El tamaño por el error de rsycn -> Probar con menos tamaño
+ SIZEREQUIRED="$PARM4"
+ #let SIZEREQUIRED=$PARM4*4/3
+
+ if [ -f "$IMGFILE" ]; then
+ echolog "Redimensionamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
+ # Copia de seguridad de la imagen
+ # Si la imagen esta montada la desmonto
+ if [ -r "$MOUNTDIR/ogimg.info" ]; then
+ echolog "umount $MOUNTDIR"
+ umount "$MOUNTDIR"
+ [ $? -ne 0 ] && echolog "Error: No podemos desmontar la imagen para hacer copia de seguridad" && exit 1
+ fi
+ if [ "$BACKUP" == "true" ]; then
+ echolog "Copia de seguridad de la imagen anterior"
+ echolog "cp $IMGFILE $IMGFILE.ant"
+ cp "$IMGFILE" "$IMGFILE.ant"
+ echolog mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
+ mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
+ fi
+
+ # Redimensionamos la imagen al tamaño necesario
+ # TODO modificar ogGetImageSize
+ IMGSIZE=$(ls -lk $IMGFILE| cut -f5 -d" ")
+ echolog "$IMGSIZE"
+ if [ $IMGSIZE -lt $SIZEREQUIRED ];then
+ echolog "truncate --size=\">$SIZEREQUIRED\"k $IMGFILE"
+ truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 > $REPOLOG
+ # Montamos la imagen, si da error nos salimos
+ mount -o compress=lzo "$IMGFILE" "$MOUNTDIR"
+ echolog "btrfs filesystem resize max $MOUNTDIR"
+ btrfs filesystem resize max "$MOUNTDIR" 2>&1 > $REPOLOG
+
+ fi
+
+
+
+ else
+ echolog "Creamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
+ echolog dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED
+ dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED
+ #Formateamos imagen
+ LOOPDEVICE=$(losetup -f)
+ echo losetup $LOOPDEVICE "$IMGFILE"
+ losetup $LOOPDEVICE "$IMGFILE"
+ echo mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE
+ mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE #&> $OGLOGCOMMAND
+
+ fi
+ # Montamos la imagen.
+ mkdir -p "$MOUNTDIR"
+ echolog "mount -o compress=lzo $IMGFILE $MOUNTDIR"
+ mount -o compress=lzo "$IMGFILE" "$MOUNTDIR"
+ [ "$?" == "0" -o "$?" == "32" ] || (echolog "Error al crear/redimensionar la imagen"; exit 1)
+ touch "$MOUNTDIR/ogimg.info"
+ TIME2=$[SECONDS-TIME]
+ echolog "Fin creación/redimension de la imagen: $[TIME2/60]m $[TIME2%60]s"
+ echo losetup -d $LOOPDEVICE
+ losetup -d $LOOPDEVICE
+ # TODO: comprobar que no se quede el losetup bloqueado.
+
+ ;;
+ MOUNT_IMAGE)
+ # Montamos el fichero imagen para que se pueda
+ #1 MOUNT_IMAGE
+ #2 nombre imagen
+ #3 extension imagen
+ IMGFILE="$REPODIR/$PARM2.$PARM3"
+ MOUNTDIR="$REPODIR/mount/$PARM2"
+ [ "$PARM3" == "diff" ] && MOUNTDIR="$MOUNTDIR.$PARM3"
+ echolog "Montamos la imagen $IMGFILE "
+ mkdir -p "$MOUNTDIR"
+ mount -o ro,compress=lzo "$IMGFILE" "$MOUNTDIR"
+ [ "$?" == "0" ] || (echolog "Error al montar la imagen"; exit 1)
+ ;;
+ UMOUNT_IMAGE)
+ # Desmontamos el fichero imagen.
+ # Si el directorio esta ocupado no se desmontará
+ #1 UMOUNT_IMAGE
+ #2 nombre imagen
+ #3 extension imagen
+ IMGEXT="$PARM3"
+ MOUNTDIR="$REPODIR/mount/$PARM2"
+ [ "$IMGEXT" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGEXT"
+ echolog "Desmontamos la imagen $IMGFILE "
+ umount $MOUNTDIR
+
+ ;;
default)
echolog "Solicitud con parametros \"$PARM\" no realizada, no registrada o con errores"
;;