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

  • 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

  • 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 #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 #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 #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 #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 #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 #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 #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

Attachments (2)

Download all attachments as: .zip