Depuis la version 0.70, la gestion des logiciels a été modifiée. En effet, on gère maintenant les différentes versions pour un logiciel donné.

Rappels

Dictionnaire OCS

Le dictionnaire OCS permet de modifier le nom d'un ou plusieurs logiciels.
Il fonctionne grâce à :
  • la création de catégories
  • l'affectation de logiciels à une catégorie
    Toute modification du dictionnaire OCS entraine la mise à jour du checksum OCS. GLPI doit donc resynchroniser la partie logicielle.
Lors de l'import des logiciels, on remonte d'OCS :
  • le nom original du logiciel (que nous appellerons INITNAME dans la suite du document)
  • le nom du logiciel attribué par le dictionnaire (que nous appellerons TNAME dans la suite du document)
  • la version du logiciel

Fonctionnement avant la version 0.70

Dans les versions 0.68.x, la version du logiciel était stockée directement dans la table glpi_software. On ne pouvait donc avoir qu'une seule version par logiciel.

Lors du premier import du logiciel, la version de celui-ci était utilisée. Aucune autre mise à jour n'était effectuée par la suite.

Le champs import_software de la table glpi_ocs_link stocke un tableau contenant le nom du logiciel. Une entrée est du type :
ID de la table glpi_inst_software => nom du logiciel.

Fonctionnement avec dictionnaire

Le nom du logiciel est resynchronisé avec le nom de la catégorie correspondante dans OCS.

Fonctionnement à partir de la version 0.70

Dans cette version sont pris en compte toutes les versions des logiciels, notamment lorsque plusieurs versions d'un même logiciel sont présentes sur une même machine.

Si des mises à jour de versions d'un logiciel ont été faites avant le passage à GLPI 0.70, les mises à jour de versions n'ont pas été répercutées dans GLPI.
Ceci a pour conséquence :
  • la désinstallation des versions périmées lors de la première synchronisation après la mise à jour de GLPI en version 0.70.
  • l'installation des versions correctes du logiciel pour les ordinateurs

Migration

Le processus de mise à jour de la base de données effectue les actions suivantes :
  • création d'un champs 'version' dans glpi_licenses
  • transfert du numéro de version du logiciel depuis la table glpi_software vers la table glpi_licenses
  • suppression du champs 'version' de la table glpi_software

Lors de la première mise à jour des logiciels de l'ordinateur, un processus transforme le champs import_software dans le forme suivante :
ID de la table glpi_inst_software => nom du logiciel + version.

Un tag version_070 est aussi introduit pour marquer la mise à jour du champ en version 0.70.

Fonctionnement sans dictionnaire

On récupère tous les logiciels de la machine dans OCS

  • cas 1 : le logiciel n'existe pas dans le tableau import_software, ou pas pour cette version
    • on vérifie que le logiciel, dans cette version n'existe pas dans l'entité de la machine (GLPI)
    • création du logiciel si besoin, et affectation d'une nouvelle license à celui-ci
    • on récupère l'ID du logiciel
    • on l'installe pour cet ordinateur
  • cas 2 : le logiciel existe dans le tableau import_software
    • on récupère le nom GLPI du logiciel (à partir de l'ID du logiciel dans la table glpi_inst_software, on récupère l'identifiant de la license associée, puis le nom du logiciel)
    • on le compare avec le nom remonté par OCS (INITNAME) (pour voir si on utilisait pas précédement le dictionnaire, et que l'on vient de désactiver son utilisation dans GLPI)
    • si les noms sont différents, on renomme le logiciel avec son nom original
    • sinon on ne fait aucun traitement

Fonctionnement avec dictionnaire

On récupère tous les logiciels de la machine dans OCS

  • cas 1 : le logiciel n'existe pas dans le tableau import_software, ou pas pour cette version
    • on vérifie que logiciel, dans cette version n'existe pas dans l'entité de la machine (GLPI)
    • création du logiciel si besoin, et affectation d'une nouvelle license à celui-ci
    • on récupère l'ID du logiciel
    • on l'installe pour cet ordinateur
  • cas 2 : le logiciel existe dans le tableau import_software
    • on récupère le nom GLPI du logiciel (à partir de l'ID du logiciel dans la table glpi_inst_software, on récupère l'identifiant de la license associé, puis le nom du logiciel)
    • on le compare avec le nom remonté par OCS (NAME)
    • si les noms sont différents (soit première remontée après l'activation du dictionnaire OCS, soit changement de nom dans le dictionnaire), on renomme le logiciel avec son nom du dictionnaire OCS (NAME)
    • sinon on ne fait aucun traitement