source: admin/Interface/RestaurarImagen @ b2aae05

Last change on this file since b2aae05 was d0df50b6, checked in by ramon <ramongomez@…>, 13 years ago

Versión 1.0.4, #531: Integrar versión 1.0.4 en rama principal.

git-svn-id: https://opengnsys.es/svn/trunk@3259 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 7.2 KB
RevLine 
[3ec149c]1#!/bin/bash
2#_______________________________________________________________________________________________________________________________
3#
4# PARAMETROS RECIBIDOS DESDE EL CLIENTE:
5# $1 disco
[d9d1720]6# $2 par=N�mero de particion
7# $3 Nombre can�nico de la imagen
[ecd8d9a]8# $4 Direcci�n IP del repositorio
9# $5 Protocolo  UNICAST  MULTICAST  TORRENT
10# $6 Opciones del protocolo
[3ec149c]11#_______________________________________________________________________________________________________________________________
12
[ecd8d9a]13#Descripcion:
14# La interfaz detecta:
15#    Si Repositorio es el global (REPO) realiza un deploy.
16#    Si Repositorio es local (CACHE) realiza un ogRestoreImage CACHE
17# El deploy, si detecta que el cliente no tiene una cache con espacio suficiente reazlia un ogRestore REPO
18
19#Códigos de error de ogRestoreImage
20#@exception OG_ERR_FORMAT   1 formato incorrecto.
21#@exception OG_ERR_NOTFOUND  2 fichero de imagen o partición no detectados.
22#@exception OG_ERR_PARTITION 3  # Error en partición de disco.
23#@exception OG_ERR_LOCKED    4 partición bloqueada por otra operación.
24#@exception OG_ERR_IMAGE    5 error al restaurar la imagen del sistema.
25#@exception OG_ERR_IMGSIZEPARTITION  30 Tamaño de la particion es menor al tamaño de la imagen.
26#@todo: el scripts restoreImage limitarlo a origen:fichero destino:particion
27#@version 1.0.1 - Separación en protocolos de transferencia y postconfiguracion
[71643c0]28#@author  Antonio J. Doblas Viso. Universidad de Málaga
[ecd8d9a]29#@date   2011-05-11
[71643c0]30#@version 1.0.1 - Separación de los ficheros-log para ser gestionado por el httpd-log
31#@author Antonio J. Doblas Viso. Universidad de Málaga 
32#@date   2011-05-11
[91aaf03]33#@version 1.0.2 - Logica basada en fichero de configuracion engine.cfg
34#@author Antonio J. Doblas Viso. Universidad de Málaga 
35#@date   2012-01-11
[71643c0]36
[91aaf03]37PROTO=$5
38PROTOOPT=$6
[71643c0]39
40TIME1=$SECONDS
[ecd8d9a]41
[91aaf03]42#Load engine configurator from engine.cfg file.
43#Carga el configurador del engine desde el fichero engine.cfg
44[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
[ecd8d9a]45
[91aaf03]46# Clear temporary file used as log track by httpdlog
47# Limpia los ficheros temporales usados como log de seguimiento para httpdlog
48echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.tmp
[71643c0]49
[91aaf03]50# Registro de inicio de ejecución
51#echo "[START Interface ] Run this command: $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE
52echo "$MSG_INTERFACE_START $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE
[71643c0]53
54
[ecd8d9a]55
56# Si el origen(pariticion) esta bloqueada salir.
[d0df50b6]57echo "[1] TODO: $MSG_HEL_ogIsLocked: ogIsLocked $1 $2" | tee -a $OGLOGSESSION $OGLOGFILE
[ecd8d9a]58#if ogIsLocked $1 $2; then
59#       ogRaiseError $OG_ERR_LOCKED "$MSG_PARTITION, $1 $2"
60#       exit $?
61#fi
62
63# Valor por defecto para el repositorio.
64REPO=${4:-"REPO"}
65[ "$REPO" == "$(ogGetRepoIp)" ] && REPO="REPO"
66[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE"
67[ "$REPO" == "CACHE" ] && REPO="CACHE"
68
[d0df50b6]69#Informacion previa de la imagen
70IMGOS=$(ogGetImageInfo `ogGetPath $REPO $3.img`) || exit $(echo "ERROR: $OG_ERR_NOTFOUND $MSG_ERR_NOTFOUND, IMAGEN $REPO $3" | tee -a $OGLOGSESSION $OGLOGFILE; ogRaiseError $OG_ERR_NOTFOUND "$MSG_ERR_NOTFOUND, $REPO $3"; echo $?)
71#IMGOS=$(ogGetImageInfo `ogGetPath $REPO $3.img`) || exit $(ogRaiseError $OG_ERR_NOTFOUND "$MSG_ERR_NOTFOUND, $REPO $3"; echo $?)
72IMGSIZE=$(ls -s `ogGetPath $REPO $3.img`| cut -f1 -d" ")
[91aaf03]73
74echo "[1] IMG-FILE=$3  SIZE=$IMGSIZE (KB)   METADATA=$IMGOS"  | tee -a $OGLOGSESSION $OGLOGFILE
[ecd8d9a]75
76if [ "$REPO" == "CACHE" ]
[d9d1720]77then
[91aaf03]78        echo "[2] $MSG_HELP_ogRestoreImage : ogRestoreImage CACHE $3 $1 $2" | tee -a $OGLOGSESSION $OGLOGFILE
[71643c0]79        ogRestoreImage CACHE "$3" "$1" "$2" &>> $OGLOGCOMMAND
[ecd8d9a]80        RETVAL=$?
[91aaf03]81        RESUMERESTOREIMAGE=$(cat $OGLOGCOMMAND | grep "Total Time:")
[ecd8d9a]82fi     
[d356c72]83
[914d834]84
85
[ecd8d9a]86if [ "$REPO" == "REPO" ]
87then
[91aaf03]88        case "$5" in
89                MULTICAST-DIRECT)
90                        NEXTOPERATION=MULTICAST
[ecd8d9a]91                ;;
[91aaf03]92                UNICAST-DIRECT)
93                    NEXTOPERATION=UNICAST
[ecd8d9a]94                ;;
[91aaf03]95                *)
96                        echo "[2] updateCache REPO \"/$3.img\" $5 $6"    | tee -a $OGLOGSESSION $OGLOGFILE
97                        TIME2=$SECONDS
98                        updateCache REPO "/$3.img" "$5" "$6"     &>> $OGLOGCOMMAND     
99                        RETVAL=$?
100                        TIME2=$[SECONDS-TIME2]
101                        echo "   [ ]  $MSG_SCRIPTS_TIME_PARTIAL updateCache $[TIME2/60]m $[TIME2%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
102                        case $RETVAL in
103                                0)
104                                        echo "[50] updateCache (OK)" | tee -a $OGLOGSESSION $OGLOGFILE
105                                        NEXTOPERATION=CACHE
106                                ;;
107                                15|16)
108                                        echo "[50] $MSG_ERR_NOTCACHE ;  $MSG_ERR_CACHESIZE " | tee -a $OGLOGSESSION $OGLOGFILE
109                                        echo "[50] $MSG_SCRIPTS_CHECK_ENGINE " | tee -a $OGLOGSESSION $OGLOGFILE
110                                        case "$RESTOREPROTOCOLNOCACHE" in
111                                                MULTICAST|multicast)
112                                                        [ "$5" == "MULTICAST" ] &&      NEXTOPERATION=MULTICAST
113                                                        [ "$5" == "TORRENT" ] &&        NEXTOPERATION=UNICAST
114                                                        [ "$5" == "UNICAST" ] &&        NEXTOPERATION=UNICAST
115                                                ;;
116                                                UNICAST|unicast)
117                                                        NEXTOPERATION=UNICAST
118                                                ;;
119                                        esac
120                                ;;                                                     
121                        esac
[ecd8d9a]122                ;;
[91aaf03]123        esac   
[ecd8d9a]124fi
125
[91aaf03]126
127TIME3=$SECONDS
128
129
130case $NEXTOPERATION in
131        CACHE)         
132                echo "[55] CACHE $MSG_HELP_ogRestoreImage : ogRestoreImage CACHE $3 $1 $2 UNICAST" | tee -a $OGLOGSESSION $OGLOGFILE
133                ogRestoreImage CACHE "$3" "$1" "$2" &> $OGLOGCOMMAND     
134                RETVAL=$?
135                RESUMERESTOREIMAGE=$(cat $OGLOGCOMMAND | grep "Total Time:")
136        ;;
137        UNICAST)
138                echo "[55] $5 $MSG_HELP_ogRestoreImage : ogRestoreImage REPO $3 $1 $2 UNICAST"  | tee -a $OGLOGSESSION $OGLOGFILE
139                ogRestoreImage REPO "$3" "$1" "$2" &> $OGLOGCOMMAND             
140                RETVAL=$?
141                RESUMERESTOREIMAGE=$(cat $OGLOGCOMMAND | grep "Total Time:")
142        ;;
143        MULTICAST)
144                echo "[55] $PROTO $PROTOOPT $MSG_HELP_ogRestoreImage  "  | tee -a $OGLOGSESSION $OGLOGFILE
145                OPTPROTOCOLO=$6
146                REPOIP=$(ogGetRepoIp)
147                echo "       $MSG_SCRIPTS_MULTICAST_PRECHECK_PORT " | tee -a $OGLOGSESSION
148                PORT=$(echo $OPTPROTOCOLO | cut -f1 -d":")
149                let PORTAUX=$PORT+1
150                #TODO: ticket 379
151                NUMBER=$[ ( $RANDOM % 30 )  + 1 ]
152                sleep $NUMBER
153                #FIN TODO
154                tools=$(ogGetImageProgram REPO $3)
155                compressor=$(ogGetImageCompressor REPO $3)
156                echo "       $MSG_SCRIPTS_MULTICAST_CHECK_PORT  $REPOIP:$PORTAUX $REPOIP:$PORT" | tee -a $OGLOGSESSION
157                if (nmap -n -sU -p $PORTAUX $REPOIP | grep open)
158                then
159                        ogMcastReceiverPartition $1 $2 $PORT $tools $compressor &> $OGLOGCOMMAND       
160                else
161                        # TODO ticket 379 Realizar la petición basada en identificador de operacion
162                        echo "       $MSG_SCRIPTS_MULTICAST_REQUEST_PORT :  hose $REPOIP 2009 --out sh -c echo -ne START_MULTICAST /$3.img $OPTPROTOCOLO"  | tee -a $OGLOGSESSION $OGLOGFILE
163                        hose $REPOIP 2009 --out sh -c "echo -ne START_MULTICAST /$3.img $OPTPROTOCOLO"                                 
164                        #echo "espero y llamo a: ogMcastReceiverFile $PORT CACHE $2"
165                        sleep 20
166                        if (nmap -n -sU -p $PORTAUX $REPOIP | grep open)
167                        then
168                                        ogMcastReceiverPartition $1 $2 $PORT $tools $compressor   &> $OGLOGCOMMAND     
169                                        RETVAL=$?               
170                        fi
171                fi     
172                RESUMERESTOREIMAGE=$(cat $OGLOGCOMMAND | grep "Total Time:")   
173        ;;
174        REPEAT)
175                $0 $*
176        ;;
177esac
178
179echo "   [ ]      $RESUMERESTOREIMAGE " | tee -a $OGLOGSESSION $OGLOGFILE
180TIME3=$[SECONDS-TIME3]
181echo "   [ ]      $MSG_SCRIPTS_TIME_PARTIAL : $[TIME3/60]m $[TIME3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
182
183
184#if [ $RETVAL == 0 ]
185#then
186        echo "[90] $MSG_SCRIPTS_OS_CONFIGURE " | tee -a $OGLOGSESSION $OGLOGFILE
[71643c0]187        configureOs "$1" "$2"
[91aaf03]188#fi
[71643c0]189
190TIME=$[SECONDS-TIME1]
[91aaf03]191echo "[100] $MSG_SCRIPTS_TIME_TOTAL $[TIME/60]m $[TIME%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
[71643c0]192
[91aaf03]193# Registro de fin de ejecución
194#echo "[END Interface] Command finished with this code:  $RETVAL" | tee -a $OGLOGSESSION $OGLOGFILE
195echo "$MSG_INTERFACE_END $RETVAL" | tee -a $OGLOGSESSION $OGLOGFILE
[71643c0]196
[ecd8d9a]197exit $RETVAL
[71643c0]198
Note: See TracBrowser for help on using the repository browser.