source: admin/Sources/Services/ogAdmRepoAux @ de088a3

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 de088a3 was 8361974, checked in by irina <irinagomez@…>, 12 years ago

#565 comandos para manipular las imagenes sincronizadas desde el servidor

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

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