source: admin/Sources/Services/ogAdmRepoAux @ e825eca

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

#565 imagenes sincronizadas. modificacion script existentes: updateCache, enging.cfg y ogAdmRepoAux.

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

  • Property mode set to 100755
File size: 5.0 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
71                # Aumentamos El tamaño por el error de rsycn -> Probar con menos tamaño
72                SIZEREQUIRED="$PARM4"
73                #let SIZEREQUIRED=$PARM4*4/3
74
75                if [ -f "$IMGFILE" ]; then
76                    echolog "Redimensionamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
77                    # Copia de seguridad de la imagen
78                    # Si la imagen esta montada la desmonto
79                    if [ -r "$MOUNTDIR/ogimg.info" ]; then
80                        echolog "umount $MOUNTDIR"
81                        umount "$MOUNTDIR"
82                        [ $? -ne 0 ] && echolog "Error: No podemos desmontar la imagen para hacer copia de seguridad" && exit 1
83                    fi
84                    if [ "$BACKUP" == "true" ]; then
85                        echolog "Copia de seguridad de la imagen anterior"
86                        echolog "cp  $IMGFILE $IMGFILE.ant"
87                        cp  "$IMGFILE" "$IMGFILE.ant"
88                        echolog mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
89                        mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
90                    fi
91
92                    # Redimensionamos la imagen al tamaño necesario
93                    # TODO modificar ogGetImageSize
94                    IMGSIZE=$(ls -lk $IMGFILE| cut -f5 -d" ")
95                    echolog "$IMGSIZE"
96                    if [ $IMGSIZE -lt $SIZEREQUIRED ];then
97                        echolog "truncate --size=\">$SIZEREQUIRED\"k $IMGFILE"
98                        truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 > $REPOLOG
99                        # Montamos la imagen, si da error nos salimos
100                        mount -o compress=lzo  "$IMGFILE" "$MOUNTDIR"
101                        echolog "btrfs filesystem resize max $MOUNTDIR"
102                        btrfs filesystem resize max "$MOUNTDIR"  2>&1 > $REPOLOG
103                       
104                    fi
105
106
107       
108                else
109                    echolog "Creamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
110                    echolog dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED
111                    dd if=/dev/zero of=$IMGFILE bs=1024 count=$SIZEREQUIRED
112                    #Formateamos imagen
113                    LOOPDEVICE=$(losetup -f)
114                    echo losetup $LOOPDEVICE "$IMGFILE"
115                    losetup $LOOPDEVICE "$IMGFILE"
116                    echo mkfs.btrfs  -L ${PARM2##*\/} $LOOPDEVICE
117                    mkfs.btrfs  -L ${PARM2##*\/} $LOOPDEVICE #&> $OGLOGCOMMAND
118       
119                fi
120                # Montamos la imagen.
121                mkdir -p "$MOUNTDIR"
122                echolog "mount -o compress=lzo  $IMGFILE $MOUNTDIR"
123                mount -o compress=lzo  "$IMGFILE" "$MOUNTDIR"
124                [ "$?" == "0" -o "$?" == "32" ] || (echolog "Error al crear/redimensionar la imagen"; exit 1)
125                touch "$MOUNTDIR/ogimg.info"
126                TIME2=$[SECONDS-TIME]
127                echolog "Fin creación/redimension de la  imagen: $[TIME2/60]m $[TIME2%60]s"
128                echo losetup -d $LOOPDEVICE
129                losetup -d $LOOPDEVICE
130                # TODO: comprobar que no se quede el losetup bloqueado.
131
132        ;;
133        MOUNT_IMAGE)
134                # Montamos el fichero imagen para que se pueda
135                #1 MOUNT_IMAGE
136                #2 nombre imagen
137                #3 extension imagen
138                IMGFILE="$REPODIR/$PARM2.$PARM3"
139                MOUNTDIR="$REPODIR/mount/$PARM2"
140                [ "$PARM3" == "diff" ] && MOUNTDIR="$MOUNTDIR.$PARM3"
141                echolog "Montamos la imagen $IMGFILE "
142                mkdir -p "$MOUNTDIR"
143                mount -o ro,compress=lzo  "$IMGFILE" "$MOUNTDIR"
144                [ "$?" == "0" ] || (echolog "Error al montar la imagen"; exit 1)
145        ;;
146        UMOUNT_IMAGE)
147                # Desmontamos el fichero imagen.
148                # Si el directorio esta ocupado no se desmontará
149                #1 UMOUNT_IMAGE
150                #2 nombre imagen
151                #3 extension imagen
152                IMGEXT="$PARM3"
153                MOUNTDIR="$REPODIR/mount/$PARM2"
154                [ "$IMGEXT" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGEXT"
155                echolog "Desmontamos la imagen $IMGFILE "
156                umount $MOUNTDIR
157
158        ;;
159        default)
160            echolog "Solicitud con parametros  \"$PARM\"  no realizada, no registrada o con errores"
161        ;;
162esac
163
Note: See TracBrowser for help on using the repository browser.