#!/bin/bash

#___________________________________________________
#
# PARAMETROS RECIBIDOS DESDE EL CLIENTE:
# $1 Número de disco
# $2 Número de particion
# $3 Nombre canónico de la imagen (sin extensión)
# $4 Dirección del repositorio (REPO, por defecto)
#___________________________________________________


#$OG_ERR_NOTEXEC    Si no es llamada por OG client
#$OG_ERR_LOCKED=4    Si la particion está bloqueada.


#Codigos de error del scripts createImage
#@exception OG_ERR_FORMAT     # 1 formato incorrecto.
#@exception OG_ERR_PARTITION  # 3 Error en partición de disco o en su sistema de archivos
#@exception OG_ERR_IMAGE      # 5 Error en funcion ogCreateImage o ogRestoreImage.
#@exception OG_ERR_NOTWRITE   # 14 error de escritura
#@exception OG_ERR_NOTCACHE   # 15 si cache no existe 15
#@exception OG_ERR_CACHESIZE  # 16 si espacio de la cache local o remota no tiene espacio 16
#@exception OG_ERR_REDUCEFS   # 17 error al reducir sistema de archivos.
#@exception OG_ERR_EXTENDFS   # 18 Errror al expandir el sistema de archivos.


#Códigos de error de la funcion ogCreateImage



TIME1=$SECONDS

#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 " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.tmp

# Registro de inicio de ejecución
#echo "[START Interface ] Run this command: $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE
echo "$MSG_INTERFACE_START $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE

# Solo ejecutable por OpenGnSys Client.
PATH=$PATH:$(dirname $0)
PROG=$(basename $0)
CALLER=$(ogGetCaller)
if [ "$CALLER" != "ogAdmClient" ]; then
	ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG"
	exit $?
fi

# Si el origen(pariticion) esta bloqueada salir.

#if ogIsLocked $1 $2; then
#	ogRaiseError $OG_ERR_LOCKED "$MSG_PARTITION, $1 $2"
#	exit $?
#fi


# Valor por defecto para el repositorio.
REPO=${4:-"REPO"}
[ "$REPO" == "$(ogGetRepoIp)" ] && REPO="REPO"
[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE"
[ "$REPO" == "CACHE" ] && REPO="CACHE"

# Si el destino es REPO y el cliente no está en modo "admin"; activar repositorio para escritura,
if [ "$REPO" == "REPO" -a "$boot" != "admin"  ] 
then 
	CambiarAcceso admin &>> $OGLOGFILE
	RETVAL=$?
	[ $RETVAL -gt 0 ] && exit $RETVAL 	
fi



if [ -f createImage$ogengine ]; then
	createImage$ogengine "$1" "$2" "$REPO" /"$3" &>> $OGLOGCOMMAND
else
	createImage "$1" "$2" "$REPO" /"$3" &>> $OGLOGCOMMAND
fi
RETVAL=$?

[ "$REPO" == "REPO" -a "$boot" != "admin" ] && CambiarAcceso user

#if [ $RETVAL == 0 ]
#then
#rm $OGLOGFILE
#	touch $OGLOGFILE
#else
#	echo $RETVAL &>> $OGLOGFILE
#fi

# Registro de fin de ejecución
#echo "[END Interface] Command finished with this code:  $RETVAL" | tee -a $OGLOGSESSION $OGLOGFILE
echo "$MSG_INTERFACE_END $RETVAL" | tee -a $OGLOGSESSION $OGLOGFILE

exit $RETVAL

