opengnsys-1.1.0 (#14) - No se muestran correctamente las propiedades del repositorio (#409) - Message List

No se muestran correctamente las propiedades del repositorio
 unsolved

Hola,

Tengo un repositorio con las imágenes divididas en carpetas según la unidad organizativa. Al pinchar en las propiedades del repositorio no me muestra bien la lista de imágenes. Para algunas aparece correctamente la ruta, tamaño, fecha de creación y permisos, pero para la mayoría no. Os muestro un extracto de lo que aparece:

Imagen (Tipo) Tamaño Modificado Permisos
fcomp / FCOMPa05Kub1804 (img) 3689337370 bytes 2019-09-12 14:02:08 0644
fcomp / FCOMPa01Win10A (img) 16326382785 bytes 2019-10-08 14:42:32 0644
fcomp / FCOMPa01Win10 (img) 7321114669 bytes 2019-07-26 14:33:30 0644
fcomp / IIDOSa01W7old (img) bytes 1970-01-01 01:00:00 0
fcomp / IIDOSa02LinuxMant (img) bytes 1970-01-01 01:00:00 0
fcomp / IIDOSa06DatosWin (img) bytes 1970-01-01 01:00:00 0
iidos / IIDOSa01SemA (img) 12875845710 bytes 2019-09-06 15:15:27 0644
iidos / IIDOSa01W7old (img) 27702421884 bytes 2018-07-05 18:38:02 0644
iidos / H97PlusW10 (img) 8076730488 bytes 2019-09-05 15:32:25 0644
iidos / IIDOSa02LinuxMant (img) 726833178 bytes 2018-06-26 18:01:34 0644
iidos / IIDOSa06DatosWin (img) 2470627464 bytes 2018-06-26 18:05:30 0644
iidos / TCOMPa01W10Test (img) bytes 1970-01-01 01:00:00 0
iidos / TCOMPa06LinuxFSO (img) bytes 1970-01-01 01:00:00 0
iidos / TCOMPa08LinuxEXAMFSO (img) bytes 1970-01-01 01:00:00 0
iidos / ACOMPa06LinuxUbuntu1804b (img) bytes 1970-01-01 01:00:00 0
iidos / ACOMPa02LinuxMant1c (img) bytes 1970-01-01 01:00:00 0

Desde la opción Eliminar Imagen de Repositorio si aparece correctamente la ruta y los tamaños de las imágenes.

¿Alguna idea de que puede estar fallando? He seguido todo lo indicado en la documentación para la separación por carpetas (https://opengnsys.es/trac/wiki/DocumentacionUsuario1.1.0/OUseparadas). La versión de opengnsys que estamos usando es la 1.1.0a.

SAlu2

Tree View Flat View (newer first) Flat View (older first)
  • Message #979

    Hola,

    Con el paso a la versión 1.1.1c he tenido que hacer algunos cambios, adjunto los ficheros checkrepo y propiedades_imagenes.php que tengo funcionando en nuestro servidor.

    SAlu2

  • Message #942

    Hola,

    Finalmente he modificado el fichero propiedades_imagenes.php ya que no mostraba correctamente ni el tamaño ni la ruta de las imágenes al pinchar en propiedades, lo cual se debía a que no tenía en cuenta que las imágenes estuvieran en una carpeta dentro de /opt/opengnsys/images. Adjunto el fichero.

    SAlu2 y cuidaros

  • Message #941

    También he modificado la función checkremoved ya que al borrar una imagen no se eliminaba la entrada en el fichero repoinfo.json:

    # Check if images are removed to update the repository configuration file.
    function checkremoved() {
        local IMG TYPE OU i j n m
        [ ! -w "$INFOFILE" ] && raiseError access "$INFOFILE"
        # Check if global images are defined into JSON file.
        n=$(jq ".images | length" $INFOFILE)
        for ((i=0; i<n; i++)); do
            # Image name and type.
            IMG="$(jq -r ".images[$i].name" $INFOFILE)"
            TYPE="$(jq -r ".images[$i].type" $INFOFILE)"
            [ "$TYPE" != "dir" ] && IMG="$IMG.$TYPE"
            # Delete entry if image does not exist and it's not locked.
            [ ! -e "$IMAGESDIR/$IMG" -a ! -e "$IMAGESDIR/$IMG.lock" ] && jq "del(.images[$i])" $INFOFILE | sponge $INFOFILE
        done
        # Check if OU images are defined into JSON file.
        m=$(jq ".ous | length" $INFOFILE)
        for ((j=0; j<m; j++)); do
            # OU subdir.
            OU="$(jq -r ".ous[$j].subdir" $INFOFILE)"
            # Delete OU's entries if its subdir does not exist.
            if [ ! -e "$IMAGESDIR/$OU" ]; then
                jq "del(.ous[$j])" $INFOFILE | sponge $INFOFILE
            else
                #n=$(jq ".images | length" $INFOFILE)
                n=$(jq ".ous[$j].images | length" $INFOFILE) #corregido por acodoner
                for ((i=0; i<n; i++)); do
                    # Image name and type.
                    IMG="$(jq -r ".ous[$j].images[$i].name" $INFOFILE)"
                    TYPE="$(jq -r ".ous[$j].images[$i].type" $INFOFILE)"
                    [ "$TYPE" != "dir" ] && IMG="$IMG.$TYPE"
                    # Delete entry if image does not exist and it's not locked.
                    [ ! -e "$IMAGESDIR/$OU/$IMG" -a ! -e "$IMAGESDIR/$OU/$IMG.lock" ] && jq "del(.ous[$j].images[$i])" $INFOFILE | sponge $INFOFILE
                done
            fi
        done
    }
    

    Señalar que todos los fallos indicados se producen también en la versión 1.1.1a.

    SAlu2 y ánimo

  • Message #940

    Hola,

    He estado modificando el guion /opt/opengnsys/bin/checkrepo y ya me funciona todo correctamente. Los fallos que daba eran que metía las imágenes nuevas en todas las ous dentro del fichero repoinfo.json y además en cada ejecución borraba todos los campos de todas las imágenes de todas la ous salvo el nombre del fichero y el tipo.

    He realizado unos pequeños cambios en las funciones checkfiles y addToJson:

    # Check for file-based images to update the repository configuration file.
    function checkfiles() {
        local IMAGES IMG INFO DATA
        # File-stored images.
        IMAGES=$(find $IMAGESDIR -maxdepth 2 -type f \( -name "*.img" -o -name "*.dsk" \) -print)
        for IMG in $IMAGES; do
            # Skip locked images.
            [ -e "$IMG.lock" ] && continue
            # Retrieve image creation data and delete temporary file.
            INFO="$IMG.info"
    	[ ! -e "$INFO" ] && continue # Si no existe fichero .info, no hacer nada y pasar al siguiente. Por acodoner
            [ "$INFO" -ot "$IMG" ] && rm -f "$INFO" && echo "Warning: Deleted outdated file $INFO" && continue # Si el fichero .info es obsoleto, borralo, no hacer nada y pasar al siguiente. Por acodoner
            DATA=""
            [ -r "$INFO" ] && DATA=$(cat "$INFO")
            # Add data to configuration file (name, type and data) and remove image info file.
            IMG=${IMG#$IMAGESDIR/}
            addToJson "${IMG%.*}" "${IMG##*.}" "$DATA" && rm -f "$INFO"
        done
    }
    
    # Create/edit JSON file about installed ogLive clients.
    function addToJson() {
        # Parameters and variables.
        local IMAGENAME="$1" IMAGETYPE="$2" DATA="$3" JSON i j n m OUNAME OUIND IMGIND
        local CLONATOR COMPRESSOR FSTYPE DATASIZE CLIENT
        IFS=":" read -r CLONATOR COMPRESSOR FSTYPE DATASIZE CLIENT <<<"$DATA"
        # Check if image is restricted to an OU (subdir).
        if [[ $IMAGENAME =~ / ]]; then
            OUNAME="${IMAGENAME%/*}"
            IMAGENAME="${IMAGENAME##*/}"
        fi
        # Data size must be numeric (in KB).
        [[ $DATASIZE =~ ^[0-9]*$ ]] || DATASIZE=0
        # JSON-formatted new entry.
        JSON=$(cat << EOT | jq .
    {
      "name":"$IMAGENAME",
      "type":"${IMAGETYPE,,}",
      "clientname":"$CLIENT",
      "clonator":"${CLONATOR,,}",
      "compressor":"${COMPRESSOR,,}",
      "filesystem":"${FSTYPE^^}",
      "datasize":$[ DATASIZE * 1024]
    }
    EOT
        )
        # Check JSON file consistency.
        if [ "$(jq -c keys $INFOFILE 2>/dev/null)" == '["directory","images","ous"]' ]; then
            # Common image.
            if [ -z "$OUNAME" ]; then
                # Check if the image is defined into JSON file.
                n=$(jq ".images | length" $INFOFILE)
                for ((i=0; i<n; i++)); do
                    [ "$(jq ".check=$JSON | .check.name==.images[$i].name" $INFOFILE)" == "true" ] && IMGIND=$i
                done
    	    # Check if it needs to update or insert data.
                if [ -n "$IMGIND" ]; then
                    # Update if image data changes and info file exists.
                    [ -n "$3" -a "$(jq ".check=$JSON | .check==.images[$IMGIND]" $INFOFILE)" == "false" ] && jq ".images[$IMGIND]=$JSON" $INFOFILE | sponge $INFOFILE
                else
                    # Append a new entry.
                    jq ".images |= (. + [$JSON])" $INFOFILE | sponge $INFOFILE
                fi
            else    # OU image.
                # Append a new OU entry if it does not exist.
                if [ -z "$(jq -r ".ous[].subdir" $INFOFILE | grep "^$OUNAME$")" ]; then
                    JSON=$(cat << EOT | jq .
    {
      "subdir": "$OUNAME",
      "images": [ $JSON ]
    }
    EOT
                    )
                    jq ".ous |= (. + [$JSON])" $INFOFILE | sponge $INFOFILE
                else
                    # Check if the image is defined in some OU.
                    m=$(jq ".ous | length" $INFOFILE)
                    for ((j=0; j<m; j++)); do
                        n=$(jq ".ous[$j].images | length" $INFOFILE)
                        for ((i=0; i<n; i++)); do
                            [ "$(jq ".check=$JSON | .check.name==.ous[$j].images[$i].name" $INFOFILE)" == "true" ] && OUIND=$j && IMGIND=$i
                        done
                    done
                    # Check if it needs to update or insert data.
                    if [ -n "$IMGIND" ]; then
                        # Update if image data changes and info file exists.
                        [ $# -gt 2 -a "$(jq ".check=$JSON | .check==.ous[$OUIND].images[$IMGIND]" $INFOFILE)" == "false" ] && jq ".ous[$OUIND].images[$IMGIND]=$JSON" $INFOFILE | sponge $INFOFILE
    	        else
    		    # Obtener el índice de la UO donde añadir la nueva entrada. Por acodoner
    		    m=$(jq ".ous | length" $INFOFILE)
                        for ((j=0; j<m; j++)); do
                            [ $(jq ".ous[$j].subdir" $INFOFILE | sed s/\"//g) == $OUNAME ] && OUIND=$j
                        done
                        # Append a new entry.
    		    jq ".ous[$OUIND].images |= (. + [$JSON])" $INFOFILE | sponge $INFOFILE
                    fi
                fi
            fi
        else
            # Create new JSON file.
            if [ -z "$OUNAME" ]; then
                cat << EOT | jq . > $INFOFILE
    {"directory":"$IMAGESDIR","images":[${IMAGENAME:+$JSON}],"ous":[]}
    EOT
            else
                cat << EOT | jq . > $INFOFILE
    {"directory":"$IMAGESDIR","images":[],"ous":[{"subdir":"$OUNAME","images":[$JSON]}]}
    EOT
            fi
        fi
    }
    
  • Message #900

    Hola,

    He editado a mano el fichero repoinfo.json para eliminar todas las entradas incorrectas y ahora se muestra la información bien cuando consulto las propiedades del repositorio en las distintas UUOO. Por tanto el fallo debe estar en el guion checkrepo. He probado a bajarme la versión que viene con la 1.1.1 junto con el fichero ogfunctions.sh y tampoco me genera bien el fichero repoinfo.json.

    SAlu2

  • Message #899

    Hola otra vez,

    He examinado el fichero repoinfo.json y he comprobado que la información que aparece en él es incorrecta:

    {
      "directory": "/opt/opengnsys/images",
      "images": [],
      "ous": [
        {
          "subdir": "fcomp",
          "images": [
            {
              "name": "FCOMPa05Kub1804",
              "type": "img",
              "clientname": "",
              "clonator": "",
              "compressor": "",
              "filesystem": "",
              "datasize": 0
            },
            {
              "name": "FCOMPa01Win10A",
              "type": "img",
              "clientname": "",
              "clonator": "",
              "compressor": "",
              "filesystem": "",
              "datasize": 0
            },
            {
              "name": "FCOMPa01Win10",
              "type": "img",
              "clientname": "",
              "clonator": "",
              "compressor": "",
              "filesystem": "",
              "datasize": 0
            },
            {
              "name": "IIDOSa01W7old",
              "type": "img",
              "clientname": "",
              "clonator": "",
              "compressor": "",
              "filesystem": "",
              "datasize": 0
            },
            {
              "name": "IIDOSa06DatosWin",
              "type": "img",
              "clientname": "",
              "clonator": "",
              "compressor": "",
              "filesystem": "",
              "datasize": 0
            },
            {
              "name": "TCOMPa01W10Test",
              "type": "img",
              "clientname": "",
              "clonator": "",
              "compressor": "",
              "filesystem": "",
              "datasize": 0
            },
            {
              "name": "TCOMPa06LinuxFSO",
              "type": "img",
              "clientname": "",
              "clonator": "",
              "compressor": "",
              "filesystem": "",
              "datasize": 0
            },
    

    Como ves aparecen imágenes de las UO tcomp e iidos dentro del subdirectorio fcomp. No sé si puede deberse a algún fallo en el script checkrepo que viene en la versión 1.1.0a.

    SAlu2

  • Message #898

    Muchas gracias,

    He sustituido el fichero que me indicas y en efecto ahora solo me aparece la ruta correspondiente a la OU, pero me siguen apareciendo imágenes de otras UUOO. Las imágenes que corresponde a la UO muestran los datos correctamente, pero las de las otras UUOO aparecen con valores incorrectos:

    redes / REDESa02SemestreB (img)	6.69 GB	2019-02-07 18:30:13	0644
    redes / REDESa3CortafuegosSRE (img)	1.17 GB	2019-09-25 16:10:36	0644
    redes / REDESa02SemestreA (img)	7.28 GB	2019-11-08 18:01:22	0644
    redes / REDESa2CortafuegosSRE (img)	1.22 GB	2019-09-25 16:08:24	0644
    redes / REDESa07SemestreA (img)	1.80 GB	2019-07-17 17:19:22	0644
    redes / REDESa07SemestreB (img)	2.38 GB	2019-04-17 16:59:28	0644
    redes / SEM2a02Ubuntu1804ar (img)	0 B	1970-01-01 01:00:00	0
    redes / SEM2a01Windows1803v1 (img)	0 B	1970-01-01 01:00:00	0
    redes / SEM2a06VMLinux (img)	0 B	1970-01-01 01:00:00	0
    redes / SISOPa02US1804b (img)	0 B	1970-01-01 01:00:00	0
    redes / SISOPa02US1804c (img)	0 B	1970-01-01 01:00:00	0
    redes / SISOPb05MNTVIRTa (img)	0 B	1970-01-01 01:00:00	0
    redes / SISOPa06KU1804b (img)	0 B	1970-01-01 01:00:00	0
    redes / SISOPa01Win101903d (img)	0 B	1970-01-01 01:00:00	0
    

    No sé seguro si toma la información del fichero repoinfo.json, de todas formas he probado a eliminar el fichero y a regenerarlo ejecutando el script checkrepo, pero no se ha solucionado.

    SAlu2

  • Message #897

    Hola, acodoner

    La página de propiedades del repositorio solicitaba la información delas imágenes al repositorio y la recibía correctamente, pero luego no tenía en cuenta la separación de las unidades organizativas.

    Hemos resuelto el error y la solución está incluido en la versión 1.1.1. Sólo afecta a una página, no se si tendrás que actualizar a la versión nueva o si modificar dicha será suficiente. Te dejo un enlace para bajarte el nuevo código:

    /opt/opengnsys/www/propiedades/propiedades_repositorios.php

    Hasta ahora

  • Message #895

    Hola, acodoner:

    Estamos haciendo pruebas y nos ocurre el mismo error.

    Se ha cambiado la forma de obtener la información de los repositorios y no nos hemos dado cuenta de este fallo. Intentaremos corregirlo lo antes posible.

    Hasta ahora

  • Message #893

    He visto que si pincho en las propiedades de una imagen los campos relativos a la información del repositorio tampoco aparecen bien:

    Camino

    /.

    Tamaño

    0 B

    SAlu2

Tree View Flat View (newer first) Flat View (older first)

Attachments (4)

Download all attachments as: .zip