#!/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 3=Git # $10 Ruta de origen de la Imagen (Carpeta) #___________________________________________________________________ # # Control parámetros #___________________________________________________________________ PROG="$(basename $0)" if [ $# -lt 9 ]; 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 #Load engine configurator from engine.cfg file. #Carga el configurador del engine desde el fichero engine.cfg [ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg # Clear temporary file used as log track by httpdlog # Limpia los ficheros temporales usados como log de seguimiento para httpdlog echo -n "" > $OGLOGSESSION; echo " " > $OGLOGCOMMAND # Registro de inicio de ejecución ogEcho log session "$MSG_INTERFACE_START $0 $*" if [ $9 -eq 1 ]; then #sincronizacion1 ogRestaurarImagenBasica "$@" RETVAL=$? fi if [ $9 -eq 2 ]; then #sincronizacion2 # Opciones de clonacion flag=$6 WHOLE=${flag:0:1} DELFILE=${flag:1:1} COMPRESS=${flag:2:1} # Nota los valores se pasan como variables de entorno, # la idea es que mas adelante vayan en el fichero PXE. [ $WHOLE -eq 1 ] && export ogrsyncw=true || export ogrsyncw=false [ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false [ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false # Origen de la imagen. [ $8 -eq 0 ] && DEST="CACHE" || DEST="REPO" # Protocolo de clonacion y opciones PROTO=${5%_*} OPT=${5#*_} restoreBaseImage $DEST "$3" $1 $2 $PROTO $OPT RETVAL=$? fi if [ $9 -eq 3 ]; then #sincronizacion3 GIT # Opciones de clonacion flag=$6 GITMODE=${flag:0:1} ACLMODE=${flag:1:1} [ ${flag:0:1} -eq 1 ] && GITMODE="clone" || GITMODE="checkout" [ ${flag:1:1} -eq 1 ] && ACLMODE="total" || ACLMODE="user" # Origen de la imagen.2 [ $8 -eq 0 ] && DEST="CACHE" || DEST=$4 ogEcho log session deployGitImage $DEST "$3" $1 $2 GIT $GITMODE:$ACLMODE deployGitImage $DEST "$3" $1 $2 GIT $GITMODE:$ACLMODE RETVAL=$? fi # Registro de fin de ejecución ogEcho log session "$MSG_INTERFACE_END $RETVAL" exit $RETVAL