summaryrefslogtreecommitdiffstats
path: root/client/shared/scripts/updateGitCache
blob: 8ceab2a45c1951513b9136a48ab3f6411dc0a0ed (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
#!/bin/bash
#/**
#         updateGitCache
#@brief   Actualiza la cache del cliente con imagen tipo git
#@param 1 REPO          Origen del fichero. -accesible por nfs-samba-
#@param 2 str_fichero   nombre del fichero a actualizar.
#@param 3 str_protoco.  GIT
#@ejemplo: updateGitCache 172.17.36.11 imagen1 GIT
#@return  
#@exception OG_ERR_FORMAT       formato incorrecto.
#@exception OG_ERR_NOTCACHE     No existe cache -15-
#@todo      si existe la imagen sólo actualizar
#@date    2019/12/19
#*/ ##

TIME=$SECONDS
PROG="$(basename $0)"
if [ $# -lt 3 ]; then
    ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG str_REPO _str_IMGNAME GIT"
    exit $?
fi

#Carga del configurador del engine
[ -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 " " > $OGLOGCOMMAND

if ! [ "$(ogGetCaller)" == "deployGitImage" ]; then
    echo -n "" > $OGLOGSESSION;

    # Registro de inicio de ejecución
    ogEcho log session "[1] $MSG_SCRIPTS_START $0 $*"
fi

REPOSITORIO="${1^^}"
IMGNAME="$2"
PROTOCOLO="${3^^}"
[ "$PROTOCOLO" == "GIT" ] || ogRaiseError "$PROG: protocolo $PROTOCOLO" || exit $?
GITDIR=${GITDIR:-"git"}

# Unidad organizativa.
[ "$ogunit" != "" ] && OGUNIT="$ogunit/"

# 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 $OGUNIT || exit $(ogRaiseError $OG_ERR_NOTFOUND $REPOSITORIO; echo $?)
        REPOSITORIO="REPO"
fi
REPOIP=$(ogGetRepoIp)
ogEcho log session  $REPOSITORIO $REPOIP $PROTOCOLO $OPTPROTOCOLO

# Si el repositorio local CACHE no existe error 15.
if ! $(ogFindCache >/dev/null); then
        ogRaiseError session $OG_ERR_NOTCACHE "CACHE"
        exit $?
fi



# Comprobar si existe la imagen en el repo remoto
ogExistGitImage REPO "$IMGNAME" || ogRaiseError log session $OG_ERR_NOTFOUND "REPO $IMGNAME" || exit $?

# Si no existe el directorio de git lo creamos
ogMountCache
[ -d $OGCAC$OGIMG/$GITDIR ] || mkdir $OGCAC$OGIMG/$GITDIR

# Copiamos la información de la imagen
ogCopyFile REPO "/.$IMGNAME.img.json" CACHE / || ogRaiseError log session $OG_ERR_NOTFOUND "REPO .$IMGNAME.img.json"

# Comprobar si existe la imagen en el repo local para actualizar o empezar de cero
#FALTA si existe en cache la actualizamos.
ogEcho log session "$MSG_SCRIPTS_UPDATECACHE_DOUPDATE"
ogExistGitImage CACHE "$IMGNAME" && echo "La imagen ya está bajada" && exit 0
ogEcho log session ogPullImage $IMGNAME $DISK $PART
#ogExecAndLog command ogPullImage $IMGNAME $DISK $PART
ogPullImage $IMGNAME
RETVAL=$?
[ $RETVAL -eq 0 ] || ogRaiseError log session || exit $?

# FALTA: comprobar que ha ido bien

TIME1=$[SECONDS-TIME]

ogEcho log session "   [ ] $MSG_SCRIPTS_TIME_PARTIAL $[TIME1/60]m $[TIME1%60]s"
TIME2=$SECONDS