summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoririna <irinagomez@us.es>2015-06-16 12:31:40 +0000
committeririna <irinagomez@us.es>2015-06-16 12:31:40 +0000
commitfe6843b59fa8ac9ce2e704443d2501ba172f4813 (patch)
tree06432dfe40b41831867f6a992385dd76c8d46162
parent7829e4e9833f433746363856d446d08a367beb0c (diff)
#679 Cambio Repo: script de clonación y librerías de imagenes monolíticas comprobados con todos los protocolos
git-svn-id: https://opengnsys.es/svn/branches/version1.1@4653 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-xclient/engine/Net.lib44
-rw-r--r--client/shared/etc/lang.ca_ES.conf1
-rw-r--r--client/shared/etc/lang.en_GB.conf1
-rw-r--r--client/shared/etc/lang.es_ES.conf1
-rwxr-xr-xclient/shared/scripts/deployImage26
-rwxr-xr-xclient/shared/scripts/restoreImage29
-rwxr-xr-xclient/shared/scripts/updateCache18
7 files changed, 104 insertions, 16 deletions
diff --git a/client/engine/Net.lib b/client/engine/Net.lib
index f76dcc11..a9c75a21 100755
--- a/client/engine/Net.lib
+++ b/client/engine/Net.lib
@@ -10,6 +10,50 @@
#/**
+# ogChangeRepo IPREPO [ OgUnit ]
+#@brief Cambia el repositorio para el recurso remoto images.
+#@param 1 Ip Repositorio
+#@param 2 Abreviatura Unidad Organizativa
+#@return Cambio recurso remoto en OGIMG.
+#@version 1.1 - Primera versión para OpenGnSys.
+#@author Irina Gomez, ETSII Universidad de Sevilla
+#@date 2015-06-16
+#*/
+function ogChangeRepo {
+local SRCIMG
+
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME IPREPO [ OgUnit ]" \
+ "$FUNCNAME 10.1.120.3" \
+ "$FUNCNAME 10.1.120.3 cdc"
+ return
+fi
+
+
+if [ $# -lt 1 ]; then
+ ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME IPREPO [ OgUnit ]"
+ return $?
+fi
+
+REPO="${1^^}"
+# Si REPO tomamos el valor por defecto.
+[ "$REPO" == "REPO" ] && REPO=$ogrepo
+
+source /scripts/functions
+source /scripts/ogfunctions
+# Si $1 y $2 son el repositorio y la OU actual me salgo
+[ "$REPO" == "$(ogGetRepoIp)" ] && [ "$2" == "$ogunit" -o "$2" == "" ] && return 0
+umount $OGIMG
+[ "$2" == "" ] && SRCIMG="ogimages" || SRCIMG="ogimages/$2"
+eval $(grep "OPTIONS=" /scripts/ogfunctions)
+[ "$ogactiveadmin" == "true" ] && RW=",rw" || RW=",ro"
+echo "$MSG_HELP_ogChangeRepo $REPO"
+ogConnect $REPO $ogprotocol $SRCIMG $OGIMG $RW
+
+}
+
+
+#/**
# ogGetGroupDir [ str_repo ]
#@brief Devuelve el cmaino del directorio para el grupo del cliente.
#@param str_repo repositorio de imágenes (opcional)
diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf
index 24ca7798..ce7d082b 100644
--- a/client/shared/etc/lang.ca_ES.conf
+++ b/client/shared/etc/lang.ca_ES.conf
@@ -90,6 +90,7 @@ MSG_HELP_ogAddRegistryKey="Añade una nueva clave al registro de Windows."
MSG_HELP_ogAddRegistryValue="Añade un nuevo valor al registro de Windows."
MSG_HELP_ogBoot="Arranca un sistema operativo instalado."
MSG_HELP_ogCalculateChecksum="Calcula la suma de comprobación (checksum) de un fichero."
+MSG_HELP_ogChangeRepo="Cambia el repositorio para el recurso remoto images."
MSG_HELP_ogCheckFs="Comprueba la consistencia de un sistema de archivos."
MSG_HELP_ogCheckSyncImage="Muestra el contenido de la imagen para comprobarla."
MSG_HELP_ogCleanOs="Elimina los archivos que no son necesarios en el sistema operativo."
diff --git a/client/shared/etc/lang.en_GB.conf b/client/shared/etc/lang.en_GB.conf
index e3698328..5327eabb 100644
--- a/client/shared/etc/lang.en_GB.conf
+++ b/client/shared/etc/lang.en_GB.conf
@@ -90,6 +90,7 @@ MSG_HELP_ogAddRegistryKey="Add a new Windows registry key."
MSG_HELP_ogAddRegistryValue="Add a new Windows registry value."
MSG_HELP_ogBoot="Boot a installed operating system."
MSG_HELP_ogCalculateChecksum="Calculate file checksum."
+MSG_HELP_ogChangeRepo="Cambia el repositorio para el recurso remoto images."
MSG_HELP_ogCheckFs="Check a filesystem."
MSG_HELP_ogCheckSyncImage="Displays the contents of the image to check it."
MSG_HELP_ogCleanOs="Elimina los archivos que no son necesarios en el sistema operativo."
diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf
index b3c5b761..d7a2fa0d 100644
--- a/client/shared/etc/lang.es_ES.conf
+++ b/client/shared/etc/lang.es_ES.conf
@@ -90,6 +90,7 @@ MSG_HELP_ogAddRegistryKey="Añade una nueva clave al registro de Windows."
MSG_HELP_ogAddRegistryValue="Añade un nuevo valor al registro de Windows."
MSG_HELP_ogBoot="Arranca un sistema operativo instalado."
MSG_HELP_ogCalculateChecksum="Calcula la suma de comprobación (checksum) de un fichero."
+MSG_HELP_ogChangeRepo="Cambia el repositorio para el recurso remoto images."
MSG_HELP_ogCheckFs="Comprueba la consistencia de un sistema de archivos."
MSG_HELP_ogCheckSyncImage="Muestra el contenido de la imagen para comprobarla."
MSG_HELP_ogCleanOs="Elimina los archivos que no son necesarios en el sistema operativo."
diff --git a/client/shared/scripts/deployImage b/client/shared/scripts/deployImage
index 3be16e92..821d1e3d 100755
--- a/client/shared/scripts/deployImage
+++ b/client/shared/scripts/deployImage
@@ -31,6 +31,9 @@
#@version 1.0.6 - Se añade la gestión de errores de la CACHE cuando en el engine.cfg se define RESTOREPROTOCOLNOCACHE=NONE.
#@author Antonio J. Doblas Viso.
#@date 2015-02-23
+#@version 1.1 - Cambio de repositorio para el recurso remoto images si es necesario
+#@author Irina Gomez, ETSII Universidad de Sevilla
+#@date 2015-06-16
#**/
@@ -77,17 +80,20 @@ ogEcho log session "$MSG_HELP_ogUnmount $DISK $PART"
ogUnmount $DISK $PART 2>/dev/null
# Valor por defecto para el repositorio.
-[ "$REPO" == "$(ogGetRepoIp)" ] && REPO="REPO"
-[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE"
+ogCheckIpAddress "$REPO"
+[ $? == 0 -o "$REPO" == "REPO" ] && MODE="REPO"
+[ "$REPO" == "$(ogGetIpAddress)" -o "$REPO" == "CACHE" ] && MODE="CACHE"
+# Se comenta lo siguiente porque no se puede obtener antes de cambiar de repositorio
+# Solo informativo, se comprueba en updateCache y restoreImage
#Informacioin previa de la imagen
-IMGOS=$(ogGetImageInfo `ogGetPath $REPO $IMGNAME.img`) || exit $(ogRaiseError session $OG_ERR_NOTFOUND "$REPO $2"; echo $?)
-IMGSIZE=$(ls -s `ogGetPath $REPO $IMGNAME.img`| cut -f1 -d" ")
+#IMGOS=$(ogGetImageInfo `ogGetPath $REPO $IMGNAME.img`) || exit $(ogRaiseError session $OG_ERR_NOTFOUND "$REPO $2"; echo $?)
+#IMGSIZE=$(ls -s `ogGetPath $REPO $IMGNAME.img`| cut -f1 -d" ")
-ogEcho log session "[1] REPO=$REPO IMG-FILE=$IMGNAME.img SIZE=$IMGSIZE (KB) METADATA=$IMGOS"
+#ogEcho log session "[1] REPO=$REPO IMG-FILE=$IMGNAME.img SIZE=$IMGSIZE (KB) METADATA=$IMGOS"
# Procesar repositorio.
-case "$REPO" in
+case "$MODE" in
CACHE) # Repositorio en caché local.
NEXTOPERATION=CACHE
;;
@@ -102,9 +108,9 @@ case "$REPO" in
# Si protocolo es torrent|torrent-cache o multicast|multicast-cache
TORRENT|TORRENT-CACHE|MULTICAST|MULTICAST-CACHE|UNICAST|UNICAST-CACHE)
- ogEcho log session "[2] updateCache REPO \"/$IMGNAME.img\" $PROTO $PROTOOPT"
+ ogEcho log session "[2] updateCache "$REPO" \"/$IMGNAME.img\" $PROTO $PROTOOPT"
TIME2=$SECONDS
- updateCache REPO "/$IMGNAME.img" "$PROTO" "$PROTOOPT"
+ updateCache "$REPO" "/$IMGNAME.img" "$PROTO" "$PROTOOPT"
RETVAL=$?
TIME2=$[SECONDS-TIME2]
ogEcho log session " [ ] $MSG_SCRIPTS_TIME_PARTIAL updateCache $[TIME2/60]m $[TIME2%60]s"
@@ -165,9 +171,9 @@ case "$NEXTOPERATION" in
CACHE)
PARAMS="CACHE $IMGNAME $DISK $PART" ;;
UNICAST)
- PARAMS="REPO $IMGNAME $DISK $PART" ;;
+ PARAMS="$REPO $IMGNAME $DISK $PART" ;;
MULTICAST)
- PARAMS="REPO $IMGNAME $DISK $PART $PROTO $PROTOOPT" ;;
+ PARAMS="$REPO $IMGNAME $DISK $PART $PROTO $PROTOOPT" ;;
esac
# Si existe, ejecuta script personalizado "restoreImageCustom"; si no, llama al genérico "restoreImage".
diff --git a/client/shared/scripts/restoreImage b/client/shared/scripts/restoreImage
index 6d5198aa..f0bda76a 100755
--- a/client/shared/scripts/restoreImage
+++ b/client/shared/scripts/restoreImage
@@ -1,6 +1,20 @@
#!/bin/bash
-# Script de ejemplo para restaurar una imagen.
-# (puede usarse como base para el programa de restauración de imágenes usado por OpenGNSys Admin).
+#/**
+#@file restoreImage
+#@brief Script de ejemplo para restaurar una imagen.
+#@param $1 Repositorio (CACHE, REPO o dirección IP)
+#@param $2 Nombre canónico de la imagen (sin extensión)
+#@param $3 Número de disco
+#@param $4 Número de particion
+#@param $5 Protocolo (UNICAST, UNICAST-DIRECT, MULTICAST o MULTICAST-DIRECT)
+#@param $6 Opciones del protocolo
+#@exception OG_ERR_FORMAT 1 formato incorrecto.
+#@exception OG_ERR_NOTFOUND 2 cambio de repositorio: repositorio no encontrado
+#@exception OG_ERR_NOTFOUND 2 fichero de imagen o partición no detectados.
+#@version 1.1 - Cambio de repositorio para el recurso remoto images si es necesario
+#@author Irina Gomez, ETSII Universidad de Sevilla
+#@date 2015-06-16
+#**/
TIME1=$SECONDS
PROG="$(basename $0)"
@@ -30,6 +44,17 @@ PROTO="${5^^}"
PROTO=${PROTO:-"UNICAST"}
PROTOOPT="$6"
IMGTYPE="${IMGTYPE:-"img"}"
+
+# Si es una ip y es igual a la del equipo restaura desde cache
+[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE"
+# Si es una ip y es distinta a la del recurso samba cambiamos de REPO.
+ogCheckIpAddress $REPO
+if [ $? == 0 -o $REPO == "REPO" ] ; then
+ # Si falla el cambio -> salimos con error repositorio no valido
+ ogChangeRepo $REPO || exit $(ogRaiseError $OG_ERR_NOTFOUND '$REPO'; echo $?)
+ REPO="REPO"
+fi
+
# Comprobar que existe la imagen del origen.
IMGFILE=$(ogGetPath "$REPO" "$IMGNAME.$IMGTYPE")
IMGDIR=$(ogGetParentPath "$REPO" "$IMGNAME")
diff --git a/client/shared/scripts/updateCache b/client/shared/scripts/updateCache
index 8760ddd2..03cc4234 100755
--- a/client/shared/scripts/updateCache
+++ b/client/shared/scripts/updateCache
@@ -27,7 +27,9 @@
#@date 2013-02-20
#@version 1.0.5 - uso de md5 full para las transferencias torrent, en la llamada => ogUpdateCacheIsNecesary
#@date 2014-07-09
-
+#@version 1.1 - Cambio de repositorio para el recurso remoto images si es necesario
+#@author Irina Gomez, ETSII Universidad de Sevilla
+#@date 2015-06-16
#*/ ##
PROG="$(basename $0)"
@@ -47,6 +49,13 @@ echo " " > $OGLOGCOMMAND
REPOSITORIO="${1^^}"
PROTOCOLO="${3^^}"
OPTPROTOCOLO="$4"
+# Si es una ip y es distinta a la del recurso samba cambiamos de REPO.
+ogCheckIpAddress $REPOSITORIO
+if [ $? == 0 -o $REPOSITORIO == "REPO" ] ; then
+ # Si falla el cambio -> salimos con error repositorio no valido
+ ogChangeRepo $REPOSITORIO || exit $(ogRaiseError $OG_ERR_NOTFOUND $REPOSITORIO; echo $?)
+ REPOSITORIO="REPO"
+fi
REPOIP=$(ogGetRepoIp)
ogEcho log session $REPOSITORIO $REPOIP $PROTOCOLO $OPTPROTOCOLO
@@ -75,7 +84,7 @@ else
# Si la imagen es monolitica y ha elegido protocolo = RSYNC salimos con error.
[ $PROTOCOLO == "RSYNC" ] && exit $(ogRaiseError session $OG_ERR_DONTSYNC_IMAGE "REPO $2"; echo $?)
IMGSYNC=FALSE
- ogUpdateCacheIsNecesary "$1" "$2" "$PROTOCOLO"
+ ogUpdateCacheIsNecesary "$REPOSITORIO" "$2" "$PROTOCOLO"
RETVAL=$?
fi
# si RETVAL=0 => actualizamos si RETVAL=1 no actaulizasmo-exit 0 || si RETVAL>2 exit 1
@@ -174,7 +183,7 @@ TIME1=$SECONDS
case "$PROTOCOLO" in
TORRENT)
- ogEcho log session "ogCopyFile $1 $2.torrent absolute $OGCAC/$OGIMG"
+ ogEcho log session "ogCopyFile $REPOSITORIO $2.torrent absolute $OGCAC/$OGIMG"
# tiempos
timewait=$(expr $(printf '%d\n' 0x$(ogGetMacAddress | awk -F: '{print $5$6}')) \* 120 / 65535)
ogExecAndLog command ogCopyFile $REPOSITORIO "$2.torrent" "$IMGDIR"
@@ -273,7 +282,8 @@ case "$PROTOCOLO" in
[ ${PIPESTATUS[0]} -eq 0 ] && RETVAL="1"|| RETVAL="2"
# Desmonto las imagenes
ogUnmountImage CACHE "$IMGNAME" $IMGTYPE
- ogUnmountImage REPO "$IMGNAME" $IMGTYPE
+ ogUnmountImage REPO "$IMGNAME" $IMGTYPE
+ ogUnlockImage CACHE "$2"
fi
;;
esac