diff options
author | irina <irinagomez@us.es> | 2017-11-09 09:14:19 +0000 |
---|---|---|
committer | irina <irinagomez@us.es> | 2017-11-09 09:14:19 +0000 |
commit | 31d4f1a5492f5028775b012f30e82ec4c0810722 (patch) | |
tree | 0f818beea4321bcc3106b1fe35f1f3460a1c0439 /client/engine/Image.lib | |
parent | 744ecd6404213903f08b712aa4fac5ea19fa3201 (diff) |
#815 ogGetSizeParameters: Al calcular el espacio libre en el repositorio tiene en cuenta si la imagen ya existe.
git-svn-id: https://opengnsys.es/svn/branches/version1.1@5504 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client/engine/Image.lib')
-rwxr-xr-x | client/engine/Image.lib | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/client/engine/Image.lib b/client/engine/Image.lib index f9089404..b160c350 100755 --- a/client/engine/Image.lib +++ b/client/engine/Image.lib @@ -457,28 +457,37 @@ dd if="$DISK" of="$IMGFILE" bs=446 count=1 || ogRaiseError $OG_ERR_IMAGE "$1 $IM #@param int_disk numero de disco #@param int_part numero de particion #@param str_repo repositorio de imágenes { REPO, CACHE } +#@param str_imageName Nombre de la imagen #@param str_imageType Tipo de imagen: monolit (por defecto), sync o diff. (parametro opcional) #@return SIZEDATA SIZEREQUIRED SIZEFREE ISENOUGHSPACE #@note si str_imageType= diff necesario /tmp/ogimg.info, que es creado por ogCreateInfoImage. +#@note para el tamaño de la imagen no sigue enlaces simbólicos. #@exception OG_ERR_FORMAT formato incorrecto. #@author Irina Gomez, ETSII Universidad de Sevilla #@date 2014/10/24 #@version 1.1.0 - En la salida se incluye el espacio disponible en el repositorio (ticket #771) #@author Irina Gomez - ETSII Universidad de Sevilla #@date 2017-03-28 +#@version 1.1.0 - Si la imagen ya existe en el REPO se suma su tamaño al espacio libre +#@author Irina Gomez - ETSII Universidad de Sevilla +#@date 2017-11-08 #*/ ## function ogGetSizeParameters () { local MNTDIR SIZEDATA KERNELVERSION SIZEREQUIRED FACTORGZIP FACTORLZOP SIZEFREE # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME num_disk num_part str_repo [monolic|sync|diff]" \ - "if $FUNCNAME 1 2 REPO sync ; then ...; fi" \ - "if $FUNCNAME 1 6 CACHE ; then ...; fi" + ogHelp "$FUNCNAME" "$FUNCNAME num_disk num_part str_repo str_imgname [monolit|sync|diff]" \ + "if $FUNCNAME 1 2 REPO Windows10 sync ; then ...; fi" \ + "if $FUNCNAME 1 6 Ubuntu16 CACHE ; then ...; fi" return fi # Error si no se reciben 1 o 2 parámetros. -[ $# -lt 3 ] && return $(ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ndisco nparticion REPO|CACHE [monolitic|sync]" ; echo $?) +[ $# -lt 4 ] && return $(ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ndisco nparticion REPO|CACHE imgname [monolit|sync|diff]" ; echo $?) + +# Recogemos parametros +REPO=${3^^} +IMGTYPE="_${5^^}_" MNTDIR=$(ogMount $1 $2) if [ "$MNTDIR" == "" ]; then @@ -496,7 +505,7 @@ else fi #Aplicar factor de compresion -if [ "_${4^^}_" == "_SYNC_" -o "_${4^^}_" == "_DIFF_" ]; then +if [ "_$IMGTYPE_" == "_SYNC_" -o "_$IMGTYPE_" == "_DIFF_" ]; then # Sistema de fichero de la imagen según kernel, menor que 3.7 EXT4. comparamos revision KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}') @@ -516,14 +525,34 @@ else fi #Comprobar espacio libre en el contenedor. -[ "${3^^}" == "CACHE" ] && SIZEFREE=$(ogGetFreeSize `ogFindCache`) -[ "${3^^}" == "REPO" ] && SIZEFREE=$(df -k | grep $OGIMG | awk '{print $4}') +[ "$REPO" == "CACHE" ] && SIZEFREE=$(ogGetFreeSize `ogFindCache`) +[ "$REPO" == "REPO" ] && SIZEFREE=$(df -k | grep $OGIMG | awk '{print $4}') + +# Comprobamos si existe una imagen con el mismo nombre en $REPO +# En sincronizadas restamos tamaño de la imagen y en monoloticas de la .ant +case "${IMGTYPE}" in + _DIFF_) IMGEXT="img.diff" + ;; + _SYNC_) IMGEXT="img" + ;; + *) IMGEXT="img.ant" + ;; +esac + +IMGDIR=$(ogGetParentPath "$REPO" "/$4") +IMGFILE=$(ogGetPath "$IMGDIR/$(basename "/$4").$IMGEXT") +if [ -z "$IMGFILE" ]; then + IMGSIZE=0 +else + IMGSIZE=$(ls -s "$IMGFILE" | cut -f1 -d" ") +fi + +let SIZEFREE=$SIZEFREE+$IMGSIZE [ "$SIZEREQUIRED" -lt "$SIZEFREE" ] && ISENOUGHSPACE=TRUE || ISENOUGHSPACE=FALSE echo $SIZEDATA $SIZEREQUIRED $SIZEFREE $ISENOUGHSPACE - } #/** |