blob: 4be8e49d8bc94f2be54fe3fdebeabcedcfe3b1a9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
#!/bin/bash
#___________________________________________________________________
#
# RESTAURAR IMAGEN BÁSICA
#___________________________________________________________________
#
# Parámetros recibidos desde el cliente:
#
# $1 Número de disco
# $2 Número de particion
# $3 Nombre canónico de la imagen básica (sin extensión)
# $4 Dirección del repositorio
# $5 Tipo de transmisión 0=Unicast 1=Multicast
# $6 Es una cadena "nnn" tipo flags que codifica varios parametros.
# Tiene el formato "nnn" donde "n" vale 0 ó 1.
# 1XX: Gestionar fichero completo en lugar de diferencas
# X1X: Eliminar archivos de la partición que no estén en la imagen
# XX1: Comprimir archivos para enviarlos por la red
# El valor X indica que no importa el valor que tenga el dato
# $7 Es una cadena "nnnn" tipo flags que codifica varios parametros.
# Tiene el formato "nnnn" donde "n" vale 0 ó 1.
# 1XXX: Borrar la particion de destino antes de restaurar la imagen basica
# X1XX: Copiar Imagen básica también a la cache
# XX1X: Borrar previamente la imagen basica de la cache antes de copiarla
# XXX1: No borrar archivos en destino
# El valor X indica que no importa el valor que tenga el dato
# $8 Método de clonación 0=Desde caché 1=Desde repositorio
# $9 Metodo de sincronizacion 1=Sincronización1 2=Sincronizacion2
# $10 Ruta de origen de la Imagen (Carpeta)
#___________________________________________________________________
#
# Control parámetros
#___________________________________________________________________
PROG="$(basename $0)"
if [ $# -lt 8 ]; then
usage=" ndisco nparticion nombre_imagen_basica ip_repositorio copiar_a_caché "
usage="$usage Borrar_cache_previamente metodo_clonación Ruta_origen"
ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage"
exit $?
fi
DISCO=$1
NPART=$2
NOMBREIMG=$3
IPREPOSITORIO=$4
flag=$6
echo "flah:$flag">/tmp/log
WHLFILE=${flag:0:1}
RMVFILE=${flag:1:1}
CMPFILE=${flag:2:1}
flag=$7
echo "flah:$flag">/tmp/log
BORRARIMG=${flag:0:1}
COPIACACHE=${flag:1:1}
BORRACACHE=${flag:2:1}
NOBORRACHIVOS=${flag:3:1}
METCLONA=$8
RUTAORIGEN=${10}
#___________________________________________________________________
#
# Variables y configuración logs
#___________________________________________________________________
source /opt/opengnsys/scripts/ImagenesSincronizadas.lib
#___________________________________________________________________
#
# Activa navegador para ver progreso
#___________________________________________________________________
coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh
#___________________________________________________________________
#
# Proceso
#___________________________________________________________________
# Llamada a la función de sincronización.
echo "Restauracion de imagen basica..." | tee -a $OGLOGSESSION $OGLOGFILE
# Borrado previo de la partición
if [ $BORRARIMG -eq 1 ]; then
if [ -n $RUTAORIGEN ]; then
echo "Borrando carpeta $PARTICION$RUTAORIGEN" | tee -a $OGLOGSESSION $OGLOGFILE
rm -R $PARTICION$RUTAORIGEN
else
echo "Formateando la particion" | tee -a $OGLOGSESSION $OGLOGFILE
ogFormat $DISCO $PARTICION $TIPOPARTICION
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
kill $COPROC_PID
exit $OG_ERR_PARTITION
fi
fi
fi
# Sincronización desde repositorio
if [ $METCLONA = 1 ]; then
if [ $COPIACACHE = 0 ]; then
echo "Restaurando imagen basica desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
ORIGEN="$REPOSITORIO/$NOMBREIMG/"
DESTINO=$PARTICION$RUTAORIGEN/
# Restauración de la imagen básica
echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "***Error:$RETVAL. restaurando imagen basica desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
kill $COPROC_PID
exit $OG_ERR_IMAGE
fi
restauraListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "***Error:$RETVAL. restaurando listas ACL desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
kill $COPROC_PID
exit $OG_ERR_IMAGE
fi
echo "!!! Finaliza correctamente !!! la restauracion de imagen basica $NOMBREIMG desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
kill $COPROC_PID
exit 0
fi
fi
if [ $METCLONA = 0 ]; then
# Restauración desde la caché
echo "Restaurando desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE
fi
# Comprobar si existe caché
CACHE=$(montaCache)
if [ -z $CACHE ]; then
echo "No se puede restaurar la imagen desde la cache ya que no existe" | tee -a $OGLOGSESSION $OGLOGFILE
kill $COPROC_PID
ogRaiseError $OG_ERR_NOTCACHE "CACHE"
exit $OG_ERR_NOTCACHE
fi
# Borrar imagen de la caché
if [ $BORRACACHE -eq 1 ]; then
echo "Borrando imagen $NOMBREIMG de la cache" | tee -a $OGLOGSESSION $OGLOGFILE
rm -R $CACHE$OGIMG/$NOMBREIMG
fi
# Actualización de la caché
echo "Actualizando cache local desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
ORIGEN="$REPOSITORIO/$NOMBREIMG/"
DESTINO="$CACHE$OGIMG/$NOMBREIMG/"
echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "***Error:$RETVAL. Actualizando cache local desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
kill $COPROC_PID
exit $OG_ERR_IMAGE
fi
echo "!!! Finaliza correctamente !!! copia de imagen basica a cache local" | tee -a $OGLOGSESSION $OGLOGFILE
# Restauración desde caché a la partición
echo "Copiando imagen a la particion desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE
ORIGEN="$CACHE$OGIMG/$NOMBREIMG/"
DESTINO="$PARTICION$RUTAORIGEN/"
echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "***Error:$RETVAL. restaurando imagen basica desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE
kill $COPROC_PID
exit $OG_ERR_IMAGE
fi
restauraListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "***Error:$RETVAL. restaurando listas ACL desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE
kill $COPROC_PID
exit $OG_ERR_IMAGE
fi
echo "Ejecutando configure OS" | tee -a $OGLOGSESSION $OGLOGFILE
configureOs $DISCO $NPART
echo "!!! Finaliza correctamente !!! restauracion imagen basica $NOMBREIMG desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE
#___________________________________________________________________
#
# Retorno
#___________________________________________________________________
kill $COPROC_PID
exit 0
|