api Titor from Peje

Rédigé par Paulo Aucun commentaire
Classé dans : Divers Mots clés : titor

  1. Obtenir des infos sur les socles/repos/paquets (l'api retourne du json)
    # liste des socles (param -sO- pour retour dans le  terminal)
    wget --no-proxy -qO- peje/socle
    [{"id":1,"name":"socle2012_0.66"},{"id":2,"name":"socle2007_2.20"},
     {"id":3,"name":"socle2007_2.23"},{"id":4,"name":"socle2012_0.66_redhat"},
     {"id":5,"name":"socle2007_3.34_redhat-Tel"},{"id":6,"name":"socle2016_0.14"},
     {"id":7,"name":"socle2012_1.28"},{"id":8,"name":"socle2007_3.34"},
    ]
    
    wget --no-proxy -qO- peje/socle|jq
    [
      {
        "id": 1,
        "name": "socle2012_0.66"
      },
      {
        "id": 2,
        "name": "socle2007_2.20"
      },
      {
        "id": 3,
        "name": "socle2007_2.23"
      },
      {
        "id": 4,
        "name": "socle2012_0.66_redhat"
      },
      ...
      }
     ]
      
    # pareil avec un retour à la ligne
    wget --no-proxy -qO- peje/socle&&echo ''
    
    # info sur un socle
    wget --no-proxy -qO- peje/socle/{id}&&echo
    
    # liste de tous les repository (inbitable...)
    wget --no-proxy -qO- peje/repo&&echo
    ...
    # liste des repository d'un socle (mieux...)
    wget --no-proxy -qO- peje/socle/6/repo/6&&echo
    
    
    # on peut, obtenir des infos sur le depot id=11 ci-dessus
    wget --no-proxy -qO- peje/repo/11&&echo
    
    # liste des paquets (trop gros, ne focntionne pas !)
    wget --no-proxy -qO- peje/package
    
    # infos sur le paquet {id}
    wget --no-proxy -qO- peje/package/6
    # liste des paquets d'un socle (retour volumineux...)
    wget --no-proxy -qO- peje/socle/6/package&&echo
    ...
    
    # provide de tous les paquets(trop volumineux, ne fonctionne pas...) 
    wget --no-proxy -qO- peje/provide
    # provide du paquet {id}
    wget --no-proxy -qO- peje/provide/6
    
    # idem pour les require
    wget --no-proxy -qO- peje/require/6&&echo
    
    # liste des fichiers (trop volumineux, ne fonctionne pas...)
    wget  --no-proxy -qO- peje/file
    # liste du file {id}
    wget --no-proxy -qO- peje/file/11&&echo
     {"id":11,"name":"\/etc\/libipmiconsole.conf","id_package":2}
    # liste des fichiers du paquet id=2 (cf ci-dessus)
    wget --no-proxy -qO- peje/package/2/file
    
    
  2. Formatage du résultat avec la commande "jq"
    source 1 : http://blog.librato.com/posts/jq-json
    source 2 : https://stedolan.github.io/jq/tutorial/
# derniers erratas
wget --no-proxy -qO- peje/socle/13/latesterrata

wget --no-proxy -qO- peje/package/2|jq
  "id": 2,
  "package_type": "rpm",
  "name": "freeipmi",
  "arch": "x86_64",
  "version_epoch": "0",
  "version_ver": "1.2.1",
  "version_rel": "6.el6_5",
  "checksum_type": "sha",
  "checksum_pkgid": "YES",
  "checksum": "222a5f0b341d608ef6080a6dd0c029489ab7cc4b",
  "summary": "IPMI remote console and system management software",
  "description": "The FreeIPMI project provides \"Remote-Console\" (out-of-band)
                 and\n\"System Management Software\"
                 (in-band) based on Intelligent\nPlatform Management Interface specification.",
  "packager": "CentOS BuildSystem <http://bugs.centos.org>",
  "url": "http://www.gnu.org/software/freeipmi/",
  "time_file": "1392816995",
  "time_build": "1386578290",
  "size_package": "1947736",
  "size_installed": "10082894",
  "size_archive": "10106304",
  "location_href": "freeipmi-1.2.1-6.el6_5.x86_64.rpm",
  "format_license": "GPLv3+",
  "format_vendor": "CentOS",
  "format_group": "Applications/System",
  "format_buildhost": "c6b8.bsys.dev.centos.org",
  "format_sourcerpm": "freeipmi-1.2.1-6.el6_5.src.rpm",
  "format_header_range_start": "1376",
  "format_header_range_end": "33116",
  "id_repo": 1
}

Avec cette commande, on peut acceder à chaque element du tableau et/ou à chaque clé de un/tous les elements du tableau :

# obtenir la longueur, le type, ect...
wget --no-proxy -qO- peje/socle/6/package|jq length
wget --no-proxy -qO- peje/socle/6/package|jq 'type, length'

# recup du name, url et rp du dernier errata d'un socle
wget --no-proxy -qO- peje/socle/13/latesterrata|jq '.name, .url, .rp_ver'

# uniquement les clés
wget --no-proxy -qO- peje/socle/6/package|jq '.[]|keys'

# uniquement le 10ème element du retour JSon
wget --no-proxy -qO- peje/socle/6/package|jq '.[10]'

# uniquement la valeur de la clé 'description' du paquet ci-dessus
wget --no-proxy -qO- peje/socle/6/package|jq '.[10].description'
# idem pour une url
wget --no-proxy -qO- peje/socle/6/package|jq '.[10].url'
# idem pour les url de tous les paquets
wget --no-proxy -qO- peje/socle/6/package|jq '.[].url'

# obtenir les noms de tous les rpm du socle 2016 (id=6)
wget --no-proxy -qO- peje/socle/6/package|jq '.[].name'

# filtre sur 'socle2016_0.14'
wget --no-proxy -qO- peje/socle| jq '.[]|select(.name=="socle2016_0.14")'



# en vrac, mais trop puissant :
#retourne uniquement le contenu de name et url
wget --no-proxy -qO- peje/repo/127/package|jq '.[] | .name , .url'
# idem mais sur seule ligne
wget --no-proxy -qO- peje/repo/127/package|jq -r '.[] | .name + " --> " + .url'
# idem mais plus classe...
wget --no-proxy -qO- peje/repo/127/package|jq -r '.[] | "\(.name) -->  \(.url)"'

# retourne un format json avec une clé message qui contient la valeur de .name
wget --no-proxy -qO- peje/repo/127/package|jq '.[] | {message: .name}'

# pareil mais retourne la cle message retourne un tableau
wget --no-proxy -qO- peje/repo/127/package|jq '.[] | {message: [.name, .url]}'

# retourne 2 clés : message + adresse
wget --no-proxy -qO- peje/repo/127/package|jq '.[] | {message: .name , adresse: .url}'

Ps : fonctionne egalement sur om

wget --no-proxy -qO- om/api/core/|jq
wget --no-proxy -qO- om/api/core/platform/|jq
wget --no-proxy -qO- om/api/core/platform/sclp|jq
wget --no-proxy -qO- om/core/platform/sclp/1.0.0/|jq
wget --no-proxy -qO- om/api/core/platform/sclp/1.0.0/sclpgsa001|jq



 

Les commentaires sont fermés.