diff options
author | adv <adv@uma.es> | 2011-04-25 07:22:52 +0000 |
---|---|---|
committer | adv <adv@uma.es> | 2011-04-25 07:22:52 +0000 |
commit | 5b82964bcca3f5e86b036235ca41c41e205d24e7 (patch) | |
tree | a0549c62cc56049189a93c1dfb3d16f769e42694 | |
parent | 0b43097f34c76b445897444b2c9b284d5a190e64 (diff) |
trunk #384 #315 se gestiona desde asistente Clonacion particiones remotas el cambio de rol de cliente a Master para enviar ficheros-imagen al aula. El origen del fichero-imagen puede ser cache, o repo.
git-svn-id: https://opengnsys.es/svn/trunk@1892 a21b9725-9963-47de-94b9-378ad31fedc9
-rw-r--r-- | admin/WebConsole/asistentes/xajax.server.php | 2 | ||||
-rwxr-xr-x | client/engine/Protocol.lib | 89 | ||||
-rwxr-xr-x | client/shared/scripts/cloneRemoteFromMaster | 17 |
3 files changed, 101 insertions, 7 deletions
diff --git a/admin/WebConsole/asistentes/xajax.server.php b/admin/WebConsole/asistentes/xajax.server.php index 23ca9a53..f7efb0c7 100644 --- a/admin/WebConsole/asistentes/xajax.server.php +++ b/admin/WebConsole/asistentes/xajax.server.php @@ -91,7 +91,7 @@ where repositorios.idrepositorio=(select idrepositorio from ordenadores where or if($cantRegistros>0){ $rs->Primero(); while (!$rs->EOF){ - $SelectHtml.='<OPTION value=" CACHE /'.$rs->campos["nombreca"].'"'; + $SelectHtml.='<OPTION value=" REPO /'.$rs->campos["nombreca"].'"'; $SelectHtml.='>'; $SelectHtml.='IMG-REPO: ' . $rs->campos["nombreca"].'</OPTION>'; $rs->Siguiente(); diff --git a/client/engine/Protocol.lib b/client/engine/Protocol.lib index 85cea42b..098ab48c 100755 --- a/client/engine/Protocol.lib +++ b/client/engine/Protocol.lib @@ -8,6 +8,9 @@ #@warning License: GNU GPLv3+ #*/ + +##################### FUNCIONES UNICAST ################ + #/** # ogUcastSyntax #@brief Función para generar la instrucción de transferencia de datos unicast @@ -27,7 +30,7 @@ #*/ ## -##################### FUNCIONES UNICAST ################ + function ogUcastSyntax () { @@ -123,10 +126,10 @@ SENDPARTITION) echo "$SYNTAXCLIENT | $COMPRESSOR | $TOOLS " ;; SENDFILE) - echo "$SYNTAXSERVER --file $3" + echo "$SYNTAXSERVER -i $3" ;; RECEIVERFILE) - echo "$SYNTAXCLIENT --file $3" + echo "$SYNTAXCLIENT -i $3" ;; *) ;; @@ -238,6 +241,86 @@ fi #/** +# ogUcastSendFile [ str_repo | int_ndisk int_npart ] /Relative_path_file sessionMulticast +#@brief Envía un fichero por unicast ORIGEN(fichero) DESTINO(sessionmulticast) +#@param (2 parámetros) $1 path_aboluto_fichero $2 sesionMcast +#@param (3 parámetros) $1 Contenedor REPO|CACHE $2 path_absoluto_fichero $3 sesionMulticast +#@param (4 parámetros) $1 disk $2 particion $3 path_absoluto_fichero $4 sesionMulticast +#@return +#@exception OG_ERR_FORMAT formato incorrecto. +#@exception $OG_ERR_NOTFOUND +#@exception OG_ERR_UCASTSENDFILE +#@note Requisitos: +#@version 1.0 - Definición de Protocol.lib +#@author Antonio Doblas Viso, Universidad de Málaga +#@date 2010/05/09 +#*/ ## +# + +function ogUcastSendFile () +{ +# Variables locales. +local ARGS SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE + + +#ARGS usado para controlar ubicación de la sesion multicast +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME [str_REPOSITORY] [int_ndisk int_npart] /Relative_path_file sesionMcast(puerto:ip:ip:ip)" \ + "$FUNCNAME 1 1 /aula1/winxp.img 8000:172.17.36.11:172.17.36.12" \ + "$FUNCNAME REPO /aula1/ubuntu.iso sesionUcast" \ + "$FUNCNAME CACHE /aula1/winxp.img sesionUcast" \ + "$FUNCNAME /opt/opengnsys/images/aula1/hd500.vmx sesionUcast" + return +fi + +ARGS="$@" +case "$1" in + /*) # Camino completo. */ (Comentrio Doxygen) + SOURCE=$(ogGetPath "$1") + ARG=2 + DEVICE="$1" + ;; + [1-9]*) # ndisco npartición. + SOURCE=$(ogGetPath "$1" "$2" "$3") + ARG=4 + DEVICE="$1 $2 $3" + ;; + *) # Otros: repo, cache, cdrom (no se permiten caminos relativos). + SOURCE=$(ogGetPath "$1" "$2") + ARG=3 + DEVICE="$1 $2 " + ;; +esac + + +# Error si no se reciben los argumentos ARG necesarios según la opcion. +[ $# == "$ARG" ] || ogRaiseError $OG_ERR_FORMAT || return $? + +# Comprobar fichero origen +ogGetPath $SOURCE &> /dev/null || ogRaiseError $OG_ERR_NOTFOUND " device or file $DEVICE not found" || return $? + + + +SESSION=${!ARG} + +#generamos la instrucción a ejecutar. +COMMAND=`ogUcastSyntax "SENDFILE" "$SESSION" "$SOURCE"` +RETVAL=$? + +if [ "$RETVAL" -gt "0" ] +then + return $RETVAL +else + echo $COMMAND + eval $COMMAND || ogRaiseError $OG_ERR_UCASTSENDFILE " "; return $? +fi + +} + + + +#/** # ogMcastSyntax #@brief Función para generar la instrucción de ejucción la transferencia de datos multicast #@param 1 Tipo de operación [ SENDPARTITION RECEIVERPARTITION SENDFILE RECEIVERFILE ] diff --git a/client/shared/scripts/cloneRemoteFromMaster b/client/shared/scripts/cloneRemoteFromMaster index 7fc94380..a7a5e11b 100755 --- a/client/shared/scripts/cloneRemoteFromMaster +++ b/client/shared/scripts/cloneRemoteFromMaster @@ -103,6 +103,7 @@ case $MASTERIP in fi echo $MODEMASTER # Preparando instrucción del Master segun $MODEMASTER{SENDPARTITION SENDFILE} + case "$MODEMASTER" in SENDPARTITION) echo "[5] Master en modo $MODEMASTER: informacion inicial a los clientes-slaves" @@ -152,12 +153,22 @@ case $MASTERIP in REDSIZE=$(ogGetImageSize $2 $3) echo "[25] Master en Modo $MODEMASTER: informacion de transferencia a los clientes-slaves $PROTOCOL $TOOLCLONE $COMPRESOR $REDSIZE" faucet 4000 --out echo "READY $TOOLCLONE $COMPRESOR $REDSIZE" & - echo "[29] ogMcastSendFile $2 $3.img $SESSIONMCASTSERVER " - ogMcastSendFile $2 $3.img $SESSIONMCASTSERVER || RETVAL=$? + case $PROTOCOL in + MULTICAST|multicast) + echo "[29] ogMcastSendFile $2 $3.img $SESSIONMCASTSERVER " + ogMcastSendFile $2 $3.img $SESSIONMCASTSERVER || RETVAL=$? + ;; + UNICAST|unicast) + sleep 60 + echo "[29] ogUcastSendFile $2 $3.img $SESSIONUCASTSERVER" + ogUcastSendFile $2 $3.img $SESSIONUCASTSERVER || RETVAL=$? + ;; + esac pkill faucet ;; esac - exit $RETVAL + #exit $RETVAL + exit 0 # FIN Preparando instrucción del Master segun $MODEMASTER{SENDPARTITION SENDFILE} ;; *) |