source: admin/Sources/Services/ogAdmRepoAux @ b32f902

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since b32f902 was e24b042, checked in by irina <irinagomez@…>, 12 years ago

#565 #564 cambio de extension las imagenes diferenciales a img.diff

git-svn-id: https://opengnsys.es/svn/branches/version1.0@4039 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 6.3 KB
RevLine 
[8fc9552]1#!/bin/bash
2PARM=`cat`
[cad1e1b]3#PARM=$@
4
[8fc9552]5
[e8460d2]6#TODO:  ticket 379
7#buscar parametro de identificador de operacion.
8#usar parametro de identificacion para anexarlo al nombre de log
9#Comprobar si la variable está seteas.
10#Si no lo está setearla.
11#Si esta seteada (en progreso) salir.
12
13
[cad1e1b]14TIME=$SECONDS
[e8460d2]15
[aa91bf5]16BASEDIR=/opt/opengnsys
[7f7068e]17PATH=$PATH:$BASEDIR/bin
[aa91bf5]18REPONAME=ogAdmRepo
19REPOLOG=$BASEDIR/log/$REPONAME.log
[e8460d2]20MCASTLOGBASE=$BASEDIR/log/mcastlog
21MCASTLOG=$MCASTLOGBASE/ogAdmRepoMcast.`date +%Y%m%d-%H%M%S`
[cad1e1b]22REPODIR="$BASEDIR/images/"
23
24BACKUP=$(grep BACKUP /opt/opengnsys/client/etc/engine.cfg| cut -d= -f2)
[aa91bf5]25
[7f7068e]26# Añade registro de incidencias.
27function echolog () {
28        date +"%Y%m%d-%H%M%S $*" >> $REPOLOG
29}
30
[e8460d2]31mkdir -p $MCASTLOGBASE
[8fc9552]32
[cad1e1b]33
[8fc9552]34PARM1=$(echo $PARM | cut -f1 -d" ")
35PARM2=$(echo $PARM | cut -f2 -d" ")
36PARM3=$(echo $PARM | cut -f3 -d" ")
37PARM4=$(echo $PARM | cut -f4 -d" ")
38
[7f7068e]39case "$PARM1" in
[8fc9552]40        START_MULTICAST)
[aa91bf5]41                #1 START_MULTICAST
42                #2 fichero a enviar
43                #3 opciones de multicast
[7f7068e]44                FILE="$PARM2"
45                MCASTOPT="$PARM3"
46                echolog "Ejecutar $(which sendFileMcast) $FILE $MCASTOPT"
47                sendFileMcast $FILE $MCASTOPT &>> $MCASTLOG
[e8460d2]48                case $? in
[7f7068e]49                        1)  echolog "Parametros insuficientes"
50                            return 1 ;;
51                        2)  echolog "Fichero no accesible"
52                            return 2 ;;
53                        3)  echolog "Sesion multicast no valida"
54                            return 3 ;;
[e8460d2]55                esac
[35a3e22]56        ;;
[cad1e1b]57        CREATE_IMAGE)
58                # Creamos/Redimensionamos el fichero de imagen y lo montamos para que se pueda escribir sobre el
59                #1 CREATE_IMAGE
60                #2 nombre imagen
[e24b042]61                #3 tipo de imagen [ img | diff ]
[cad1e1b]62                #4 tamaño imagen
[e24b042]63                MOUNTDIR="$REPODIR/mount/$PARM2"
64                if [ "$PARM3" == "img" ] ; then
65                        IMGEXT="img"
66                else
67                        IMGEXT="img.diff"
68                        MOUNTDIR="$MOUNTDIR.diff"
69                fi
[cad1e1b]70                IMGFILE="$REPODIR/$PARM2.$IMGEXT"
71                IMGDIR="$(dirname $IMGFILE)"
72                [ -d  $IMGDIR ] || mkdir -p $IMGDIR
73
[8361974]74                mkdir -p "$MOUNTDIR"
[cad1e1b]75
76                SIZEREQUIRED="$PARM4"
77
78                if [ -f "$IMGFILE" ]; then
79                    echolog "Redimensionamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
80                    # Copia de seguridad de la imagen
81                    # Si la imagen esta montada la desmonto
82                    if [ -r "$MOUNTDIR/ogimg.info" ]; then
83                        echolog "umount $MOUNTDIR"
84                        umount "$MOUNTDIR"
85                        [ $? -ne 0 ] && echolog "Error: No podemos desmontar la imagen para hacer copia de seguridad" && exit 1
86                    fi
87                    if [ "$BACKUP" == "true" ]; then
88                        echolog "Copia de seguridad de la imagen anterior"
89                        echolog "cp  $IMGFILE $IMGFILE.ant"
90                        cp  "$IMGFILE" "$IMGFILE.ant"
91                        echolog mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
92                        mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
93                    fi
94
95                    # Redimensionamos la imagen al tamaño necesario
96                    # TODO modificar ogGetImageSize
[56b3a42]97                    IMGSIZE=$(ls -l --block-size=1024 $IMGFILE| cut -f5 -d" ")
[cad1e1b]98                    if [ $IMGSIZE -lt $SIZEREQUIRED ];then
99                        echolog "truncate --size=\">$SIZEREQUIRED\"k $IMGFILE"
100                        truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 > $REPOLOG
101                        # Montamos la imagen, si da error nos salimos
102                        mount -o compress=lzo  "$IMGFILE" "$MOUNTDIR"
103                        echolog "btrfs filesystem resize max $MOUNTDIR"
104                        btrfs filesystem resize max "$MOUNTDIR"  2>&1 > $REPOLOG
105                       
106                    fi
107
108
109       
110                else
111                    echolog "Creamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
112                    echolog dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED
113                    dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED
114                    #Formateamos imagen
115                    LOOPDEVICE=$(losetup -f)
116                    echo losetup $LOOPDEVICE "$IMGFILE"
117                    losetup $LOOPDEVICE "$IMGFILE"
118                    echo mkfs.btrfs  -L ${PARM2##*\/} $LOOPDEVICE
119                    mkfs.btrfs  -L ${PARM2##*\/} $LOOPDEVICE #&> $OGLOGCOMMAND
120       
121                fi
122                # Montamos la imagen.
123                echolog "mount -o compress=lzo  $IMGFILE $MOUNTDIR"
124                mount -o compress=lzo  "$IMGFILE" "$MOUNTDIR"
125                [ "$?" == "0" -o "$?" == "32" ] || (echolog "Error al crear/redimensionar la imagen"; exit 1)
126                touch "$MOUNTDIR/ogimg.info"
127                TIME2=$[SECONDS-TIME]
128                echolog "Fin creación/redimension de la  imagen: $[TIME2/60]m $[TIME2%60]s"
[8361974]129                # Si existe dispositivo loop lo borramos.
130                [ $LOOPDEVICE ] &&  losetup -d $LOOPDEVICE
[cad1e1b]131                # TODO: comprobar que no se quede el losetup bloqueado.
132
133        ;;
134        MOUNT_IMAGE)
135                # Montamos el fichero imagen para que se pueda
136                #1 MOUNT_IMAGE
137                #2 nombre imagen
[e24b042]138                #3 tipo de imagen [ img | diff ]
[cad1e1b]139                MOUNTDIR="$REPODIR/mount/$PARM2"
[e24b042]140                if [ "$PARM3" == "img" ] ; then
141                        IMGEXT="img"
142                else
143                        IMGEXT="img.diff"
144                        MOUNTDIR="$MOUNTDIR.diff"
145                fi
146                IMGFILE="$REPODIR/$PARM2.$IMGEXT"
[cad1e1b]147                echolog "Montamos la imagen $IMGFILE "
148                mkdir -p "$MOUNTDIR"
149                mount -o ro,compress=lzo  "$IMGFILE" "$MOUNTDIR"
150                [ "$?" == "0" ] || (echolog "Error al montar la imagen"; exit 1)
151        ;;
152        UMOUNT_IMAGE)
153                # Desmontamos el fichero imagen.
154                # Si el directorio esta ocupado no se desmontará
155                #1 UMOUNT_IMAGE
156                #2 nombre imagen
[e24b042]157                #3 tipo de imagen [ img | diff ]
158                IMGTYPE="$PARM3"
[cad1e1b]159                MOUNTDIR="$REPODIR/mount/$PARM2"
[e24b042]160                [ "$IMGTYPE" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGTYPE"
[8361974]161                echolog "Desmontamos la imagen $PARM2 $PARM3 "
[cad1e1b]162                umount $MOUNTDIR
[8361974]163                rmdir $MOUNTDIR
[cad1e1b]164
165        ;;
[cd1f048]166        REDUCE_IMAGE)
167                # Reduce el archivo de la imagen a tamaño datos + 500M
168                #1 REDUCE_IMAGE
169                #2 Nombre Imagen
[e24b042]170                #3 Tipo de imagen [ img |diff ]
171                MOUNTDIR="$REPODIR""mount/${PARM2}"
172                if [ "$PARM3" == "img" ] ; then
173                        IMGEXT="img"
174                else
175                        IMGEXT="img.diff"
176                        MOUNTDIR="$MOUNTDIR.diff"
177                fi
[cd1f048]178                IMGFILE="$REPODIR$PARM2.$IMGEXT"
[8361974]179                [ ! -f $IMGFILE ] && echolog "Imagen $IMGFILE no existe" && exit 1
[cd1f048]180
[e24b042]181                [ -d $MOUNTDIR ] || mkdir $MOUNTDIR
[cd1f048]182                mount -o compress=lzo  "$IMGFILE" "$MOUNTDIR"   
183                AVAILABLE=$(df -k|grep $MOUNTDIR|awk '{print $4}')
184
185                # Si el espacio libre menor que 500Mb desmontamos la imagen y nos salimos
186                if [ $AVAILABLE -lt 500000 ]; then
[e24b042]187                     echolog "reducir imagen REPO $PARM2 $IMGEXT. tamaño minimo, nada que hacer"
[cd1f048]188                     umount $MOUNTDIR
[e24b042]189                     rmdir $MOUNTDIR
[cd1f048]190                     exit 0
191                fi
192
193                USED=$(df -k|grep $MOUNTDIR|awk '{print $3}')
194                let ENDSIZE=USED+500000
195                echolog "reducir imagen REPO $PARM2 $IMGEXT, tamaño final: $ENDSIZE"
196                echolog btrfs filesystem resize "$ENDSIZE"k $MOUNTDIR
197                btrfs filesystem resize "$ENDSIZE"k $MOUNTDIR
198                umount $MOUNTDIR
199                echolog "truncate --size=\"$ENDSIZE\"k $IMGFILE"
200                truncate --size="$ENDSIZE"k $IMGFILE
[e24b042]201
202                rmdir $MOUNTDIR
[cd1f048]203        ;;
[35a3e22]204        default)
[7f7068e]205            echolog "Solicitud con parametros  \"$PARM\"  no realizada, no registrada o con errores"
[8fc9552]206        ;;
[7f7068e]207esac
Note: See TracBrowser for help on using the repository browser.